我試圖在.find或.where或任何用於檢索對象之後總是運行一些代碼。ActiveRecord總是在檢索後運行一些代碼
例如,下面介紹我想要的東西,但不工作
Class Person < ActiveRecord::BA
@mortality=true
end
我想@死亡率= true來運行,每當一個Person對象被創建 而基於我目前的ORM/ActiveRecord的理解,每當完成檢索時都會創建一個新對象。希望這是正確的。
我試圖在.find或.where或任何用於檢索對象之後總是運行一些代碼。ActiveRecord總是在檢索後運行一些代碼
例如,下面介紹我想要的東西,但不工作
Class Person < ActiveRecord::BA
@mortality=true
end
我想@死亡率= true來運行,每當一個Person對象被創建 而基於我目前的ORM/ActiveRecord的理解,每當完成檢索時都會創建一個新對象。希望這是正確的。
你想這樣做的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
值以及使用零門||=
這裏)
http://api.rubyonrails.org/classes/ActiveRecord/Callbacks.html
查找after_find和after_initialize回調。