Tengo varios métodos de clase personalizados _as _... que me gustaría usar en mi aplicación. Me gustaría que el código para esos métodos esté en los archivos en el directorio de aplicaciones/módulos.¿Cómo puedo extender ActiveRecord desde la aplicación/módulos?
he sido incapaz de conseguir este trabajo.
Por ejemplo, tengo un archivo: app/módulos/acts_as_lockable
module ActsAsLockable
def acts_as_lockable
before_create :set_lock
include InstanceMethods
end
module InstanceMethods
protected
def set_lock
now = Time.now.to_s
self.lock = Digest::SHA1.hexdigest(now)
end
end
end
ActiveRecord::Base.extend ActsAsLockable
Y en application.rb
config.autoload_paths += %W(#{config.root}/app/modules)
Cuando intento cargar un modelo que llama acts_as_lockable consigo el siguiente error:
NameError: undefined local variable or method `acts_as_lockable'
Mi conjetura es que yo no fuera la carga automática bec carpeta de módulos ¿Ya se ha cargado ActiveRecord cuando lo extiendo? Hay otra manera de hacer esto? Me gustaría poder modificar el archivo durante el desarrollo sin reiniciar mi servidor, pero eso es más un deseo que una necesidad.
Gracias que funcionó como un encanto. Me doy cuenta de que probablemente no sea la solución más práctica, pero por alguna razón odio ver declaraciones incluidas en mis modelos. – tanman