Почему association.build не назначит parent_id этому дочернему элементу? - PullRequest
4 голосов
/ 21 апреля 2009

У меня есть следующие модели:

В плане.rb

has_many :tickets

и в ticket.rb

belongs_to :plan
validates_presence_of :plan_id

При выполнении следующего кода в контроллере

@plan.tickets.build( ... )
@plan.save

сохранение не выполнено с сообщением error_message для заявки: план не может быть пустым. (план действителен.)

1 Ответ

3 голосов
/ 21 апреля 2009

Я имел это, когда мой объект был новым и несохраненным, когда я назвал build на нем.

build присваивает plan_id, и если идентификатор @plan равен нулю, то plan_id вашего билета будет равен нулю. Поскольку build не подтверждает и не сохраняет, вы не узнаете об этом позже.

Другие методы добавления связанного объекта к несохраненному объекту, кажется, помнят, что он несохранен, и устанавливают идентификатор соответствующим образом. Итак, попробуйте это:

 @plan.tickets << Ticket.new(...)
 @plan.save
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...