我有一個模塊A,並且有幾個類需要Mixin它,還有一個方法應該寫爲該模塊的Class Method,但是這種方法需要從與這些類匹配的表中獲取數據。它可以實現嗎?在模塊類方法中,是否有可能獲得在該模塊中混合的類?
module Authenticate
def password=(password)
if password.present?
generate_salt
self.hashed_password = Authenticate.encrypt_password(password, salt)
end
end
class << self
def encrypt_password(password,salt)
Digest::SHA2.hexdigest(password + salt)
end
end
private
def generate_salt
self.salt = self.object_id.to_s + rand.to_s
end
end
require 'authenticate_module'
class Administrator < ActiveRecord::Base
validates :password, :confirmation => true
attr_accessor :password_confirmation
attr_reader :password
include Authenticate
end
這是一個方法:
def authenticate(name,password)
if user = ???.find_by_name(name)
if user.hashed_password == Authenticate.encrypt_password(password,user.salt)
user
end
end
end
評論,因爲我不知道這是正確的..你有沒有嘗試過'self.class'你的'???'是什麼? – noodl 2012-03-16 16:12:09
我認爲這可能在實例方法中起作用,類方法中的「放置自己」將會是「Authenticate」。 – 2012-03-17 00:06:10