2010-02-09 96 views

回答

16

ActiveRecord belongs_to关联能够与父模型一起自动保存,但功能默认为关闭。要启用它:

class Post < ActiveRecord::Base 
    belongs_to :user, :autosave => true 
end 
+2

奇怪。我打开了那个标志,并且像上面一样仍然给我'> post.errors#=># [“不能空白”]}>''和'user.new_record? #=> true'。我错过了什么吗? – hsribei 2010-02-09 19:23:52

+4

实际上,默认情况下**的功能是**。您必须将其设置为false才能将其关闭,否则所有关联都会自动保存。 – 2012-10-03 17:01:34

+0

@OdeeOdum:这不是真的,我有这样的问题,并设置自动保存:真正的轨道3修复了问题。 – 2013-03-03 18:37:46

7

我相信你想:

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

换句话说,保存用户记录时,寻求对“岗位”关联另一侧的所有记录并保存。

0

belongs_to API documentation说(Rails的4.2.1):

:autosave

如果为true,始终保存相关对象或摧毁它,如果标记为破坏,保存父对象时。

如果为false,则永远不要保存或销毁关联的对象。

默认情况下,如果它是新记录,则只保存关联的 对象。

请注意,accep_nested_attributes_for设置:autosave为true。

在你的情况下,用户是新记录,所以它会被自动保存。

关于accepts_nested_attributes_for的最后一句话也被许多人遗漏。