Если у меня есть ассоциация 'belongs_to' в модели, я хотел бы знать условную разницу между проверкой ассоциации:
class Topping < ActiveRecord::Base
belongs_to :pancake
validates :pancake, presence: true
...
и проверки соответствующего идентификатора модели:
class Topping < ActiveRecord::Base
belongs_to :pancake
validates :pancake_id, presence: true
...
Мотивация:
Некоторый код, который присвоил долину блину, в какой-то момент переставал работать. Изменение валидации от ассоциации с идентификатором "исправлено" проблема, но я хотел бы узнать более глубокую причину.
(FYI, когда вы входите в код, блин был действительным, а в базе данных и topping отвечали как на .pancake
, так и на .pancake_id
соответственно. Оператор push (pancake.toppings << topping
) и ручное назначение и сохранение (topping.pancake = pancake; topping.save
) не удалось с ошибкой проверки блина.)