Рельсы валидации на нескольких элементах - PullRequest
1 голос
/ 24 февраля 2010

Я использовал accepts_nested_attributes_for для нескольких разных моделей, и у меня возникла странная ситуация.

Я могу пропустить создание заготовок через верхнюю модель, и я могу проверить наличие отдельных записей через нижнюю, но возможно ли выполнить наиболее сложную проверку для набора записей?

У меня есть модели Номера и Цены. Номера has_many Тарифы и accept_nested_attributes_for Тарифы.

Я могу отсеять заготовки с помощью

accepts_nested_attributes_for :room_rates, :reject_if => lambda { |a| a[:price].blank? }

но для каждой комнаты есть 7 разных записей (тарифов) .. всегда 7 и подаются одновременно из одной и той же формы. В настоящее время, если они введут только 1 день, это позволит. Однако я хотел бы подтвердить, что все 7 должны существовать. Либо они вводят все 7, и он принимает их, либо выдает ошибку для ввода только 1 или 2. И вообще ничего не делает, если они оставляют все 7 полностью пустыми.

Я не видел ничего подобного для nested_attirbutes, поэтому мне интересно, возможно ли это.

1 Ответ

1 голос
/ 24 февраля 2010

Я не уверен, что это сработает, но не можете ли вы проверить размер тарифов в своем классе, например:

class Room < ActiveRecord::Base
  validate :all_rates_present

...

private
def all_rates_present
  unless rates.size == 7
    errors.add(:rates, "must all be filled in.")
  end
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...