【问题标题】:rails validation contigent on multiple elementsrails 验证取决于多个元素
【发布时间】:2010-02-24 13:53:05
【问题描述】:

我一直在为几个不同的模型使用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,我还没有看到类似的东西,所以我想知道这是否可能。

【问题讨论】:

    标签: ruby-on-rails ruby forms nested nested-forms


    【解决方案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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-09
      • 1970-01-01
      • 2020-11-07
      • 2012-07-15
      • 2021-07-11
      • 2020-04-05
      相关资源
      最近更新 更多