在Ruby on Rails中查找后调用模型中的方法

时间:2009-10-02 21:31:32

标签: ruby-on-rails model

我想知道在使用find之后是否可以从模型中调用方法。

类似after_save,但after_find

谢谢你, 加布里埃尔。

4 个答案:

答案 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