Вызов метода в модели после поиска в Ruby on Rails - PullRequest
6 голосов
/ 03 октября 2009

Я хотел бы знать, возможно ли вызвать метод из модели после использования find.

Что-то вроде after_save, но after_find.

Спасибо, Габриэль.

Ответы [ 4 ]

11 голосов
/ 26 апреля 2012

В настоящее время ((26.04.2012) это правильный (и работающий!) Способ сделать это:

class SomeClass < ActiveRecord::Base
  after_find :do_something

  def do_something
    # code
  end
end
4 голосов
/ 03 октября 2009

Edit: для Rails> = 3, см. Ответ от @ nothing-special-here

Есть. Вместе с after_initialize, after_find - особый случай. Вы должны определить метод, after_find :some_method недостаточно. Это должно работать, хотя:

class Post < ActiveRecord::Base
  def after_find
    # do something here
  end
end

Подробнее об этом можно прочитать в API .

2 голосов
/ 20 ноября 2010

Интересно, что метод вызовет метод дважды ... узнал, что это трудный путь.

class Post < ActiveRecord::Base     
  after_find :after_find

  def after_find
    # do something here      
  end 
end
0 голосов
/ 06 марта 2017

Если вам нужен найденный объект в вашем методе:

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...