/ lib文件夹有一个模块测试模块.rb,如何从我的User.rb模型中引用?

时间:2011-03-03 04:19:19

标签: ruby-on-rails ruby

在/ 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,就像它的静态方法一样,建议吗?

1 个答案:

答案 0 :(得分:1)

而不是模块中的def encrypt,执行def self.encrypt。解释这个简单的方法,在名称前加上self将使它成为一个静态函数。它实际上有点复杂,你在定义存储在常量TestModule中的Module实例的单例类上定义加密,但是那种东西正好处于高级ruby领域。你可以把自我方法看作是静态的,而不是真的遇到麻烦。