Любопытно, как можно было бы вызвать метод класса изнутри метода экземпляра модуля, который включен в активный класс записи. Например, я хочу, чтобы как пользовательские, так и клиентские модели разделяли основные принципы шифрования паролей.
# 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
Однако это не удалось. Говорит, что метод класса не может быть найден, когда метод экземпляра вызывает его. я могу позвонить
User.encrypt_password ( 'пароль')
но
User.authenticate ('password') не может найти метод User # encrypt_password
Есть мысли?