如果我有两个型号:
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
的{{1}}字段中正确分配了主键?
答案 0 :(得分:17)
ActiveRecord belongs_to
关联可以与父模型一起自动保存,但默认情况下该功能处于关闭状态。启用它:
class Post < ActiveRecord::Base
belongs_to :user, :autosave => true
end
答案 1 :(得分:7)
我相信你想要:
class User < ActiveRecord::Base
has_many :posts, :autosave => true
end
换句话说,在保存用户记录时,请找出“帖子”关联另一侧的所有记录并保存。
答案 2 :(得分:1)
belongs_to API documentation说(Rails 4.2.1):
:autosave
如果为true,则在保存父对象时,始终保存关联对象或在标记为销毁时将其销毁。
如果为false,则永远不要保存或销毁关联的对象。
默认情况下,仅保存关联的 对象,如果它是一个新记录。
请注意,accepts_nested_attributes_for将:autosave设置为true。
在您的情况下,用户是新记录,因此将自动保存。
许多人也错过了关于accepts_nested_attributes_for
的最后一句话。