Rails 2.3 пользовательская проверка с циклом для проверки существования - PullRequest
0 голосов
/ 01 февраля 2012

У меня есть модель под названием Booking, при создании она должна проверить, найдена ли связь.Код:

  def price_details
    variant.tour.price_details.each do |pd|
      if category == pd.category
        if date_from >= pd.from_date && date_from <= pd.to_date
          return true
        else
          errors.add_to_base('error message')
          return false
        end
      end
    end
    nil
  end

Бронирование принадлежит варианту и идентификатор варианта сохраняется в бронировании.date_from также является полем в модели бронирования.

Когда я пытаюсь запустить проверку, я получаю NoMethodError: undefined метод `tour 'для nil: NilClass.

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

РЕДАКТИРОВАТЬ:

Все еще возникают проблемы с этим, поэтому давайте попробуем это в консоли.

b = Booking.new
b.valid?
=> NoMethodError: undefined method `tour' for nil:NilClass

option.tour.price_details.each do | pd |линия, которая терпит неудачу.То же самое произойдет, если я

b = Booking.new(:variant_id => params[:variant_id])

Ответы [ 2 ]

0 голосов
/ 15 февраля 2012

Это просто потому, что связанная запись не найдена и, следовательно, возвращает NIL. b = Booking.new(:variant_id => params[:variant_id]) здесь вариант_ид не находится в variants таблице

0 голосов
/ 01 февраля 2012

Чтобы получить методы и свойства варианта из бронирования, убедитесь, что вы присвоили вариант_идентификации для нового экземпляра бронирования, например: booking = Booking.new(:variant_id => params[:variant_id]). Затем вы можете позвонить сохранить метод при бронировании. Я предполагаю, что variant_id доступно в хэше params методов вашего контроллера.

...