两种模型:字段和值。使用 Accepts_nested_attributes_for 将值嵌套到字段
一个字段可以有多个值。该字段的属性 input_type 是一个枚举,可以是 :text、:checkbox、:radio 或 :select。这些值是为此字段显示的选项,因此,如果 field.input_type 是 radio 或 select,则仅对该字段使用一个值是没有逻辑的。
在字段上使用验证,如何防止插入只有一个值的字段?
谢谢
两种模型:字段和值。使用 Accepts_nested_attributes_for 将值嵌套到字段
一个字段可以有多个值。该字段的属性 input_type 是一个枚举,可以是 :text、:checkbox、:radio 或 :select。这些值是为此字段显示的选项,因此,如果 field.input_type 是 radio 或 select,则仅对该字段使用一个值是没有逻辑的。
在字段上使用验证,如何防止插入只有一个值的字段?
谢谢
我不是 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
回调中调用的模型方法。实际上有很多方法可以做这种事情。