保存主对象时,ActiveRecord是否保存belongs_to关联?

Hel*_*iro 9 activerecord ruby-on-rails associations

如果我有两个型号:

class Post < ActiveRecord::Base
  belongs_to :user
end
Run Code Online (Sandbox Code Playgroud)

class User < ActiveRecord::Base
  has_many :posts
end
Run Code Online (Sandbox Code Playgroud)

如果我做:

post = Post.new
user = User.new
post.user = user
post.save
Run Code Online (Sandbox Code Playgroud)

难道用户得到保存,以及与主键正确分配中postuser_id字段?

Jos*_*man 19

ActiveRecord belongs_to关联可以与父模型一起自动保存,但默认情况下该功能处于关闭状态.要启用它:

class Post < ActiveRecord::Base
  belongs_to :user, :autosave => true
end
Run Code Online (Sandbox Code Playgroud)

  • 来自ActiveRecord文档:`注意,autosave:false与不声明不同:autosave.如果不存在:autosave选项,则会保存新的关联记录,但不会保存更新的关联记录 (5认同)
  • 实际上,默认情况下**的功能是**.您必须将其设置为false才能将其关闭,否则将自动保存所有关联. (4认同)
  • 奇怪的.我打开那个标志,做同样的事情仍然给我`> post.errors#=>#<OrderedHash {:user_id => ["不能空白"]}>`和`user.new_record?#=> true`.我错过了什么吗? (2认同)

csc*_*lle 7

我相信你想:

class User < ActiveRecord::Base
    has_many :posts, :autosave => true
end
Run Code Online (Sandbox Code Playgroud)

换句话说,在保存用户记录时,请找出"帖子"关联另一侧的所有记录并保存.