1

我一直在为几个不同的模型使用accepts_nested_attributes_for,但我遇到了一个奇怪的情况。

我可以通过顶部模型跳过创建空白,并且可以通过底部验证单个记录的存在,但是是否可以对一组记录进行最复杂的验证?

我有模型房间和价格。房间有_many Rates 并接受_nested_attributes_for Rates。

我可以用

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

但对于每个房间,有 7 条不同的记录(费率).. 总是 7 条,并从同一个表格一次提交。目前,如果他们只输入 1 天,它将允许它。但是我想验证所有 7 个必须存在。他们要么输入所有 7 并接受它,要么只输入 1 或 2 给他们一个错误。如果他们将所有 7 完全留空,则什么也不做。

对于nested_attirbutes,我还没有看到类似的东西,所以我想知道这是否可能。

4

1 回答 1

1

我不确定这是否可行,但您能否不检查您的 Room 类的费率大小,例如:

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
于 2010-02-24T15:06:03.747 回答