我想知道在使用find之后是否可以从模型中调用方法。
类似after_save
,但after_find
。
谢谢你, 加布里埃尔。
答案 0 :(得分:11)
如今((2012年4月26日)这是正确的方式(和工作!)来做到这一点:
class SomeClass < ActiveRecord::Base
after_find :do_something
def do_something
# code
end
end
答案 1 :(得分:4)
编辑:对于Rails&gt; = 3,请参阅 @ nothing-special-here
中的答案有。与after_initialize
一起,after_find
是一个特例。您必须定义方法,after_find :some_method
是不够的。但这应该有用:
class Post < ActiveRecord::Base
def after_find
# do something here
end
end
您可以在the API中了解更多相关信息。
答案 2 :(得分:2)
有趣的是,这将把方法称为两次......从困难的方式学到了这一点。
class Post < ActiveRecord::Base
after_find :after_find
def after_find
# do something here
end
end
答案 3 :(得分:0)
如果您需要在方法中找到找到的对象:
class SomeClass < ActiveRecord::Base
after_find{ |o| do_something(o) }
def do_something(o)
# ...
end
end
此处有更多详情:http://guides.rubyonrails.org/active_record_callbacks.html#after-initialize-and-after-find