2011-04-25 88 views
1

我有一個多態地址模型,我用了幾種形式。我在那個模型中做了簡單的驗證,但它不起作用。我究竟做錯了什麼?驗證多態關聯

地址型號

class Address < ActiveRecord::Base 
    attr_accessible :street1, :street2, :city, state, :zip 
    belongs_to :addressable, :polymorphic => true 

    validates_length_of :state, :maximun => 2, :too_long => "Field State is to long" 

    validates_numericality_of :zip, :on => :create, :message => "Zip Code must be numeric!" 
    validates_length_of :zip, :within => 5..9, :too_long => "Zip Code to long.", :too_short => "Zip Code to short" 
end 

Location Model 

class Location < ActiveRecord::Base 
    has_one :address, :as => :addressable, :dependent => :destroy 
    belongs_to :account 

    accepts_nested_attributes_for :address 

    validates_presence_of :name 
    validates_length_of :name, :maximum =>80 
end 

位置編輯表單 - 例如

<% form_for [@account, @location] do |f| %> 
    <table> 
     <%= render :partial => 'form', :locals => {:f => f} %> 
    </table> 
    <%= f.submit("Update") %> 
<% end %> 

感謝您的幫助。 Ed

回答

0

什麼是錯誤?什麼驗證沒有運行? 另外,你可以看看: http://api.rubyonrails.org/classes/ActiveRecord/Validations/ClassMethods.html#method-i-validates_associated

+0

沒有錯誤。當我創建或更新它不驗證。例如在郵政領域,我可以鍵入字母,它仍然保存記錄沒有任何錯誤。 – user724120 2011-04-27 15:11:00

+1

嘗試在地址has_one關係中添加:validate => true到位置模型 – iwiznia 2011-04-27 16:27:08