在/ lib中我有一个test_module.rb文件:
require 'digest'
module TestModule
def encrypt(string)
Digest::SHA2.hexdigest(string)
end
end
现在我的User.rb中有:
class user < ActiveRecord:Base
before_save :set_password
private
def set_password
self.encrypted_password = TestModule::encrypt(password)
end
end
我如何才能访问此方法,现在我收到一条错误消息,指出加密不是一种方法(未定义)。
我是否需要或包含此模块?
我只是想把这个方法叫做ecrypt,就像它的静态方法一样,建议吗?
答案 0 :(得分:1)
而不是模块中的def encrypt
,执行def self.encrypt
。解释这个简单的方法,在名称前加上self将使它成为一个静态函数。它实际上有点复杂,你在定义存储在常量TestModule中的Module实例的单例类上定义加密,但是那种东西正好处于高级ruby领域。你可以把自我方法看作是静态的,而不是真的遇到麻烦。