2012-07-31 54 views
0

行,所以我有一個接觸模型我如何驗證其他軌道表中的字段?

class Contact < ActiveRecord::Base 
    has_one :profile 
    validates_presence_of :first_name 
    validates_presence_of :last_name 
    validates_presence_of :email 

class Profile < ActiveRecord::Base 
    belongs_to :contact 

而且我的形式,我有這份個人資料和聯繫和接觸的驗證領域出現,但我想驗證從配置文件中的字段。我認爲將此添加到控制器將添加到錯誤消息。

@contact.errors.add(:base, "Profile Company cant be blank") 

任何想法

我的形式是的form_tag BTW,我不能改變,由於各種原因..

回答

0

如果你想節省所屬記錄時,檢查相關記錄的有效性:

class Contact 
     validates_associated :profile 
+0

但我不想驗證每條記錄......只是當參數中的配置文件....是可能的 – Trace 2012-07-31 23:40:03

+0

您可以擴展ActiveModel :: EachValidator,它傳遞當前記錄,您可以檢查是否屬性從表單中設置記錄。就像這個答案:http://stackoverflow.com/questions/7387459/validates-associated-with-models-error-message – JohnMerlino 2012-07-31 23:48:45

0

我不知道這是否會工作

class Contack < ActiveRecord::Base 
    validates_associated :profile, 
    :if => Proc.new { |a| a.profile.present? } 
end 
相關問題