2013-12-08 37 views
4

如果我做這樣的事情:擴展的ActiveRecord :: Base的

class ActiveRecord::Base 
    def self.encrypt(*attr_names) 
    encrypter = Encrypter.new(attr_names) 

    before_save encrypter 
    after_save encrypter 
    after_find encrypter 

    define_method(:after_find) { } 
    end 
end 
  1. 我在哪裏要保存此文件?
  2. 是否需要特殊名稱?
  3. 我需要撥打require嗎?
  4. 我可以將它保存在模型文件夾中嗎?
  5. 模型文件夾中聲明的類是否可以從模型文件夾中的其他類中看到,而不需要調用require

回答

5
  1. 配置/初始化/ whatever.rb
  2. 沒了
  3. 都能跟得上......初始化加載應用啓動
  4. 沒了
  5. 是啊。 Rails自動加載將搜索它。

做什麼,是你正在試圖做的是導軌上下的方式: 創建的lib/encryptable.rb文件(或應用程序/模型/顧慮,如果你是在軌道上4)定義一個模塊與你的方法。 然後在你的模型,你可以做include Encryptable或(適用於所有型號)在初始化:

ActiveRecord::Base.class_eval do 
    include Encryptable 
end 

閱讀更多關於軌道這裏4個擔憂:How to use concerns in Rails 4

相關問題