2009-10-17 56 views
0

使用模型时,您何时需要明确保存?说在一个setter保存在ActiveRecord中

def name=(n) 
    self.name = n 
end 

我需要一个self.save?

回答

1

为了您的具体的例子,你需要做这样的事情:

class MyClass < ActiveRecord::Base 
    def name=(n) 
    self.name = n 
    save! 
    end 
end 

我推荐使用节省!而不是保存,除非您计划检查自保存以来的错误!会抛出一个异常,但保存会默默地失败。

顺便说一句,我猜你的例子只是一个不切实际的例子,因为你正在覆盖现有的ActiveRecord setter函数的“名称”字段。 ActiveRecord访问器方法与普通的Ruby访问器完全不同,所以如果你在自动生成的“name =”方法的顶部创建“name =”,那么你就搞砸了。

+1

+1:AR从您的数据库表中为您生成访问器方法。无需重写。 – 2009-10-18 00:23:45

1

保存将更改保留到数据库,如果要保留更改,则必须调用保存。

在你给你不会调用保存在二传手,你会做类似的例子:

my_model.name = 'foo' 
my_model.save 
0

你不需要做任何事情。如果这对我来说最合适,你可以稍后再保存。

如果你为一个记录做了很多setter,那么每次做一次保存都没有意义。

model.foo1 = '1' 
model.save 

model.foo2 = '2' 
model.save 

model.foo3 = '3' 
model.save 

根据你将如何使用它,你可以做最后的保存。只要你做一个保存最终...

相关问题