Me gustaría saber si es posible llamar a un método de un modelo después de usar find.Llamar a un método en el modelo después de encontrar en Ruby on Rails
Algo así como after_save
, pero after_find
.
Gracias, Gabriel.
Me gustaría saber si es posible llamar a un método de un modelo después de usar find.Llamar a un método en el modelo después de encontrar en Ruby on Rails
Algo así como after_save
, pero after_find
.
Gracias, Gabriel.
Editar: para los carriles> = 3, ver la respuesta de @ nada-especial-aquí
hay. Junto con after_initialize
, after_find
es un caso especial, sin embargo. Tienes que definir el método, after_find :some_method
no es suficiente. Esto debería funcionar, sin embargo:
class Post < ActiveRecord::Base
def after_find
# do something here
end
end
Usted puede leer más sobre esto en the API.
Curiosamente, esto llamará al método dos veces ... lo aprendió de la manera difícil.
class Post < ActiveRecord::Base
after_find :after_find
def after_find
# do something here
end
end
Hoy en día ((26.04.2012) se trata de forma correcta (y trabajo) para hacer eso:
class SomeClass < ActiveRecord::Base
after_find :do_something
def do_something
# code
end
end
Si necesita el objeto encontrado en su método:
class SomeClass < ActiveRecord::Base
after_find{ |o| do_something(o) }
def do_something(o)
# ...
end
end
Más detalles aquí: http://guides.rubyonrails.org/active_record_callbacks.html#after-initialize-and-after-find
Gracias. Funcionó. –