我看到ActiveRecord有一个自动保存方法,用于在调用父模型的“保存”时保存关联模型。有没有办法自动保存整个模型?换句话说,我可以给模型一些声明,而不是“提交数据库步骤”吗?
现在我不得不说:
@household.address = "new address"
@household.save
但我宁愿说:
@household.address = "new address"
完成。
如果上述问题对您没有意义,请允许我给您一些背景信息!
在我的架构中,我有很多很多的东西。我喜欢每当我更新我的模型的一部分时,其余部分会自动保存。事实上,我甚至不必使用保存方法!
前:我有老师和学生一起参加课程。一门课程属于许多老师(是的,我的班级每班有很多老师)和许多学生。学生通过课程等教师。我发现如果我说
@course -= [@student]
或
@course += [@teacher]
然后我永远不需要使用@ course.save或更新或任何东西。它自救了。这是预期的行为!
现在提出我的问题。我的大多数协会都以这种方式工作(不需要保存),所以我觉得很烦人,在我的Schema的一部分中我需要使用save命令,但是为了其他一切而跳过该步骤。 (我想要一个更一致的框架工作,要么总是使用保存,要么永远不要使用它。)
你看,我的学生被分成了几个家庭(两个学生可以来自同一个家庭)。所以学生属于家庭,家庭有很多学生等。
如果我需要更改我家的地址,我必须使用
@household.address = "new address"
@household.save
所以我想要整个家庭模型的自动保存选项!我看到了关联的自动保存选项,但是在调用save时我不需要任何级联保存,我只是简单地不想被打电话保存!
答案 0 :(得分:2)
我从未见过你想在Rails中实现的这个功能,我很确定它不存在。否则,假设您必须设置模型的多个属性,每次更改属性时都将执行一条sql指令。
如果你想添加这种功能,你可以实现它覆盖地址设置器,以便在设置后保存模型。
def address=(value)
@address = value
self.save
end
我会建议你一个更好的选择,只需使用这个单行语法来设置和保存对象
@household.update_attributes(:address => "new address")