Curieux de savoir comment procéder pour appeler une méthode de classe à partir d'une méthode d'instance d'un module inclus par une classe d'enregistrement active. Par exemple, je souhaite que les modèles utilisateur et client partagent les éléments de chiffrement du mot de passe.appelle une méthode de classe à partir d'une méthode d'instance à partir d'un module mixin (rails)
# app/models
class User < ActiveRecord::Base
include Encrypt
end
class Client < ActiveRecord::Base
include Encrypt
end
# app/models/shared/encrypt.rb
module Encrypt
def authenticate
# I want to call the ClassMethods#encrypt_password method when @user.authenticate is run
self.password_crypted == self.encrypt_password(self.password)
end
def self.included(base)
base.extend ClassMethods
end
module ClassMethods
def encrypt_password(password)
Digest::SHA1.hexdigest(password)
end
end
end
Cependant, cela échoue. Dit que la méthode de classe ne peut pas être trouvée lorsque la méthode d'instance l'appelle. Je peux appeler User.encrypt_password ('mot de passe') mais User.authenticate ('mot de passe') ne parvient pas à rechercher la méthode utilisateur # encrypt_password
Toute pensée?