2009-10-17 62 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 

根據你將如何使用它,你可以做最後的保存。只要你做一個保存最終...

相關問題