У меня есть модель под названием «Бронирование», при создании это должно проверить, найдена ли ассоциация. Код:Rails 2.3 выборочная проверка с помощью цикла для проверки наличия
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
Бронирование belongs_to вариант и variant_id сохраняется при бронировании. date_from также является полем в модели бронирования.
Когда я пытаюсь выполнить проверку, я получаю NoMethodError: undefined метод `tour 'для nil: NilClass.
Как я могу получить доступ к варианту перед созданием?
EDIT:
По-прежнему возникают проблемы с этим, так что давайте попробуем его в консоли.
b = Booking.new
b.valid?
=> NoMethodError: undefined method `tour' for nil:NilClass
variant.tour.price_details.each do | pd | это линия, которая терпит неудачу. То же самое происходит, если я
b = Booking.new(:variant_id => params[:variant_id])
Я пытаюсь получить заказ. Выбранный пользователем выбран. Бронирование принадлежит варианту. Пользователь может выбрать вариант из формы, и он будет сохранен в таблице бронирования как variant_id. – amunds
Я отредактировал мой оригинальный вопрос в отношении belongs_to. – amunds
Имеет ли option_id? Попробуйте проверить метод before_save в консоли, чтобы увидеть, действительно ли 'Booking.new (...). Вариант' фактически не равен нулю. –