Tengo un código en un complemento de motor que incluye algunos modelos. En mi aplicación quiero extender uno de estos modelos. He logrado agregar métodos de instancia y clase al modelo en cuestión al incluir un módulo dentro de un inicializador.Extienda el modelo en el complemento con "has_many" usando un módulo
Sin embargo, parece que no puedo agregar asociaciones, devoluciones de llamada, etc. Obtengo un error de 'método no encontrado'.
/libs/qwerty/core.rb
module Qwerty
module Core
module Extensions
module User
# Instance Methods Go Here
# Class Methods
module ClassMethods
has_many :hits, :uniq => true # no method found
before_validation_on_create :generate_code # no method found
def something # works!
"something"
end
end
def self.included(base)
base.extend(ClassMethods)
end
end
end
end
end
/initializers/qwerty.rb
require 'qwerty/core/user'
User.send :include, Qwerty::Core::Extensions::User
Gotcha: ¡Cuando se hace una 'recarga'! en la consola, la clase se vuelve a cargar, pero como el módulo (en mi caso) se llama desde un inicializador, el módulo no se vuelve a aplicar. – Kris
Además, en este momento parece que el código en el módulo solo se incluye al usar la consola, cuando se llama al mismo código desde un controlador falla. Me gustaría publicar un ejemplo de código, pero una respuesta no parece correcta (después de todo, no es un foro) ... – Kris
CONTROLLER: render: text => User.new.respond_to? ('Hits') y return # => falso CONSOLA: User.new.respond_to? ('hits') # => true PREEMPT: He reiniciado el servidor :) – Kris