rails includes databases active ruby-on-rails-3 activerecord

ruby-on-rails-3 - includes - ruby sql



¿Cómo usar ''after_initialize'' en Rails 3? (1)

ACTUALIZAR

Revisé erróneamente la guía de edgerails en lugar de la guía de Rails 3 actualmente correcta (que no tiene ninguna mención de after_initialize). Sin embargo, no estoy seguro de por qué la guía de edgerails es "incorrecta". Pensé que se suponía que la guía de edgerails era la última guía actualizada.

Dejo esta pregunta como está en caso de que alguien venga a buscar el mismo "problema".

Llamada de estilo macro a after_initialize es el camino a seguir.

¿ after_initialize debe usar after_initialize como método o llamada de estilo macro?

Esto funciona, pero da una advertencia de desaprobación:

def after_initialize logger.info "Called after_initialize" end

ADVERTENCIA DE DEPRECATION: Base # after_initialize ha sido desaprobado, por favor use el método Base.after_initialize: en su lugar.

Esto funciona, y no hay ninguna advertencia:

after_initialize :do_this_after_initialize def do_this_after_initialize logger.info "Called after_initialize" end

Pero la Guía de validación de registros activos y devoluciones de llamada en 10.4 after_initialize y after_find dice:

... Si intenta registrar after_initialize o after_find usando métodos de clase de estilo macro, simplemente se ignorarán. Este comportamiento se debe a razones de rendimiento, ya que se invocará after_initialize y after_find para cada registro encontrado en la base de datos, lo que ralentizará significativamente las consultas ...

¿Eso significa que el uso de estilo macro es ineficiente en comparación con el método de estilo de método?

( Supongo que la guía es incorrecta, porque el código es el rey: D)

Otra actualización

Un compromiso aquí desde el 28 de enero de 2011 sugiere que la forma correcta es utilizar la llamada de estilo macro, no una def after_initialize .