1

2 つのモデル: フィールドと値。値は、accepts_nested_attributes_for を使用してフィールドにネストされます

フィールドは多くの値を持つことができます。フィールドには列挙型の属性 input_type があり、:text、:checkbox、:radio、:select のいずれかになります。値はこのフィールドに表示されるオプションであるため、field.input_type が radio または select の場合、フィールドに 1 つの値のみを使用するロジックはありません。

フィールドの検証を使用して、値が 1 つしかないフィールドの挿入を防ぐにはどうすればよいですか?

ありがとう

4

1 に答える 1

1

私はあなたの質問について 100% 明確ではありませんが、私が正しく理解している場合、関連する値が 1 つしかない場合、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 に答える