1

两种模型:字段和值。使用 Accepts_nested_attributes_for 将值嵌套到字段

一个字段可以有多个值。该字段的属性 input_type 是一个枚举,可以是 :text、:checkbox、:radio 或 :select。这些值是为此字段显示的选项,因此,如果 field.input_type 是 radio 或 select,则仅对该字段使用一个值是没有逻辑的。

在字段上使用验证,如何防止插入只有一个值的字段?

谢谢

4

1 回答 1

1

我不是 100% 清楚你的问题,但如果我理解正确,你想防止 Field 模型的实例在它只有一个关联值的情况下被保存?

class Field < ActiveRecord::Base
  include ActiveModel::Validations
  has_many :values
  validates :values, :presence_of_multiple => true
end

class PresenceOfMultiple < ActiveModel::EachValidator
  def validate_each(record, attribute, value)
    record.errors[attribute] << "must have more than one." unless \
      value.exists? && value.count > 1
  end
end

据我所知,这将是最接近 Rails 的方式,但您也可以将其编写为在before_validation回调中调用的模型方法。实际上有很多方法可以做这种事情。

于 2011-04-15T20:21:28.920 回答