我总是试图在.find或.where之后运行一些代码或用于检索对象的任何代码。
例如,以下内容描述了我想要的内容,但不起作用
Class Person < ActiveRecord::BA
@mortality=true
end
我想在创建Person对象时运行@ mortality = true 根据我目前对ORM / ActiveRecord的理解,每当检索完成时都会创建一个新对象。希望这是正确的。
答案 0 :(得分:2)
您想在after_initialize方法中执行此操作:
class Person < ActiveRecord::Base
def after_initialize
@mortality = true
end
end
请注意,如果可能的话,您应该避免这样做,因为它会发生在每个对象上,即使您检索到大量结果集也是如此。
在这个(虽然很简单)的情况下,你可以通过覆盖getter懒惰地完成任务:
class Person < ActiveRecord::Base
def mortality
@mortality.nil? ? true : @mortality
end
end
(你不能在这里使用nil gate ||=
,因为它也会过滤false
个值
答案 1 :(得分:0)
http://api.rubyonrails.org/classes/ActiveRecord/Callbacks.html
查找after_find和after_initialize回调。