2011-07-18 19 views
0

我試圖在.find或.where或任何用於檢索對象之後總是運行一些代碼。ActiveRecord總是在檢索後運行一些代碼

例如,下面介紹我想要的東西,但不工作

Class Person < ActiveRecord::BA 
    @mortality=true 
end 

我想@死亡率= true來運行,每當一個Person對象被創建 而基於我目前的ORM/ActiveRecord的理解,每當完成檢索時都會創建一個新對象。希望這是正確的。

回答

2

你想這樣做的after_initialize方法:

class Person < ActiveRecord::Base 
    def after_initialize 
    @mortality = true 
    end 
end 

注意,這是你應該儘可能避免這樣做,因爲它發生的每一個對象上,甚至當你獲取巨大的結果集。

在這個(雖然簡單)的情況下,你可以通過重寫吸氣懶洋洋地做作業:

class Person < ActiveRecord::Base 
    def mortality 
    @mortality.nil? ? true : @mortality 
    end 
end 

(你不能因爲它過濾false值以及使用零門||=這裏)

相關問題