Сохраняет ли ActiveRecord ассоциацию own_to при сохранении основного объекта? - PullRequest
9 голосов
/ 09 февраля 2010

Если у меня две модели:

class Post < ActiveRecord::Base
  belongs_to :user
end

и

class User < ActiveRecord::Base
  has_many :posts
end

Если я это сделаю:

post = Post.new
user = User.new
post.user = user
post.save

Сохраняется ли также пользователь и правильно ли назначен первичный ключ в поле post user_id?

Ответы [ 3 ]

18 голосов
/ 09 февраля 2010

ActiveRecord belongs_to ассоциации могут быть автоматически сохранены вместе с родительской моделью, но функциональность по умолчанию отключена. Чтобы включить его:

class Post < ActiveRecord::Base
  belongs_to :user, :autosave => true
end
7 голосов
/ 06 сентября 2012

Я верю, что вы хотите:

class User < ActiveRecord::Base
    has_many :posts, :autosave => true
end

Другими словами, при сохранении записи пользователя найдите все записи на другой стороне ассоциации 'posts' и сохраните их.

1 голос
/ 28 июня 2016

Документация относится к API * говорит (Rails 4.2.1):

:autosave

Если true, всегда сохраняйте связанный объект или уничтожайте его, если помечены для уничтожения, при сохранении родительского объекта.

Если false, никогда не сохраняйте и не уничтожайте связанный объект.

По умолчанию сохраняются только связанные объект, если это новая запись.

Обратите внимание, что accept_nested_attributes_for устанавливает: автоматически сохранять в true.

В вашем случае пользователь является новой записью, поэтому она будет автоматически сохранена.

Последнее предложение о accepts_nested_attributes_for также пропускается многими.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...