Я не на 100% уверен в вашем вопросе, но если я вас правильно понимаю, вы хотите запретить сохранение экземпляра модели поля, если у него только одно связанное значение?
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
. На самом деле существует множество способов сделать подобные вещи.