2010-02-24 47 views
1

我一直在使用accep_nested_attributes_for爲幾個不同的模型,我有一個奇怪的情況。rails驗證多個元素的連續性

我可以通過頂層模型跳過創建空白,並且可以通過底部驗證各個記錄的有效性,但是可以對一組記錄進行最複雜的驗證嗎?

我有模型房間和價格。房間has_many價格和accep_nested_attributes_for利率。

我能淘汰毛坯與

accepts_nested_attributes_for :room_rates, :reject_if => lambda { |a| a[:price].blank? } 

,但每個房間有7個不同的記錄(費率)..總是7,並立即從相同的形式提交。目前如果他們只輸入1天,它將允許它。但是我想驗證所有7個都必須存在。要麼他們輸入全部7並且接受它,要麼只給1或2輸入一個錯誤。如果他們將全部7全部留空,則什麼也不做。

我還沒有看到任何這樣的nested_attirbutes,所以我想知道是否有可能。

回答

1

我不知道這會工作,但你能不能檢查率的大小在你的房間類,類似:

class Room < ActiveRecord::Base 
    validate :all_rates_present 

... 

private 
def all_rates_present 
    unless rates.size == 7 
    errors.add(:rates, "must all be filled in.") 
    end 
end