2011-06-18 37 views
0

擁有模型1belongs_to:模型2關聯。 model2有一個屬性,稱爲持續時間與一個整數。 model1有一個屬性叫做start_day。在這個模型中,我想驗證start_day小於或等於持續時間 model2。如何在模型驗證中使用關聯?

添加以下行MODEL1:

validates_numericality_of :start_day, :less_than_or_equal_to => :model2.duration 

滑軌觸發一個NoMethodError(對於未定義的方法`持續時間」:MODEL2:符號)

MODEL2具有屬性持續時間...

任何想法我失蹤?在此先感謝...

回答

6

less_than_or_equal_to選項需要一個數值,一個實例方法的名稱或Proc在驗證時執行。你可能想第三個選項:

validates_numericality_of :start_day, 
    :less_than_or_equal_to => Proc.new { |model1| model1.model2.duration } 

或者,如果你有MODEL1的方法稱爲model2_duration你可以縮短到這一點:

validates_numericality_of :start_day, :less_than_or_equal_to => :model2_duration