В папке / lib есть moduel test_module.rb, как ссылаться на мою модель User.rb? - PullRequest
0 голосов
/ 03 марта 2011

В / 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 Ответ

1 голос
/ 03 марта 2011

вместо def encrypt в вашем модуле, сделайте def self.encrypt.Объясняя это простым способом, добавление имени к имени делает его статической функцией.На самом деле это немного сложнее, чем то, что вы определяете шифрование в классе синглтона экземпляра Module, хранящегося в константе TestModule, но такого рода вещи прямо на продвинутой территории ruby.Вы можете думать о своих методах как о статических и не создавать никаких проблем.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...