使用模型时,何时需要明确保存?在setter中说
def name=(n)
self.name = n
end
我需要self.save吗?
答案 0 :(得分:1)
保存会将更改保留到数据库中,如果要保留更改,则必须调用save。
在您给出的示例中,您不会在setter中调用save,您可以执行以下操作:
my_model.name = 'foo'
my_model.save
答案 1 :(得分:1)
对于您的具体示例,您需要执行以下操作:
class MyClass < ActiveRecord::Base
def name=(n)
self.name = n
save!
end
end
我建议使用保存!除非您计划自保存以来检查错误,否则不要保存!将抛出异常,但保存将无声地失败。
顺便说一句,我猜你的例子只是一个快速不切实际的例子,因为你要覆盖“name”字段的现有ActiveRecord setter函数。 ActiveRecord访问器方法与纯Ruby访问器完全不同,因此如果在自动生成的“name =”方法之上创建“name =”,则会被搞砸。答案 2 :(得分:0)
你不需要做任何事情。如果这对我来说最有效,你可以稍后保存。
如果您正在为记录做许多制定者,那么每次进行保存都没有意义。
model.foo1 = '1'
model.save
model.foo2 = '2'
model.save
model.foo3 = '3'
model.save
根据您的使用方式,您可以进行最终保存。只要你最终保存...