Как проверить количество вложенных атрибутов с минимумом? - PullRequest
1 голос
/ 15 апреля 2011

Две модели: поле и значения.Значение вкладывается в поле с помощью accepts_nested_attributes_for

Поле может иметь много значений.Поле имеет атрибут input_type, который является перечислением и может быть: text,: checkbox,: radio ou: select.Значения - это параметры, отображаемые для этого поля, поэтому, если field.input_type имеет значение radio или select, нет логики в использовании только одного значения для поля.

Используя проверку в Field, как я могу предотвратитьвставка поля только с одним значением?

Спасибо

1 Ответ

1 голос
/ 16 апреля 2011

Я не на 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. На самом деле существует множество способов сделать подобные вещи.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...