J'ai un peu de code dans un plugin de style moteur qui comprend certains modèles. Dans mon application, je veux étendre l'un de ces modèles. J'ai réussi à ajouter des méthodes d'instance et de classe au modèle en question en incluant un module dans un initialiseur.Étendre le modèle dans le plugin avec "has_many" en utilisant un module
Cependant, je n'arrive pas à ajouter des associations, des rappels, etc. Je reçois une erreur «méthode introuvable».
/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: Lorsque vous faites un 'recharger!' dans la console, la classe est rechargée mais comme le module (dans mon cas) est appelé depuis un initialiseur, le module n'est pas réappliqué. – Kris
En outre plus pour le moment il semble que le code dans le module est inclus seulement en utilisant la console, quand le même code est appelé d'un contrôleur il échoue. Je voudrais poster un exemple de code mais une réponse ne semble pas correcte (ce n'est pas un forum après tout) ... – Kris
CONTROLLER: render: text => User.new.respond_to? ('Hits') et return # => false CONSOLE: User.new.respond_to? ('hits') # => true PREEMPT: J'ai redémarré le serveur :) – Kris