加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 扩展ActiveRecord :: Base

发布时间:2020-12-17 02:39:51 所属栏目:百科 来源:网络整理
导读:如果我做这样的事情: 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) { } endend 我在哪里保存此文件? 它
如果我做这样的事情:

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

>我在哪里保存此文件?
>它需要有一个特殊名称吗?
>我必须在某个地方打电话吗?
>我可以将它保存在模型文件夹中吗?
>模型文件夹中声明的类是否可以从模型文件夹中的其他类中看到而不调用require?

解决方法

> config / initializers / whatever.rb
>不
> nope …初始化程序在应用程序启动时加载
>不
>是的. Rails自动加载将搜索它.

做你正在做的事情的轨道方式是:
在lib / encryptable.rb中创建一个文件(如果你在rails 4上,则为app / models / concerns),它用你的方法定义一个模块.
然后在您的模型中,您可以在初始化程序中包括Encryptable或(对于所有模型):

ActiveRecord::Base.class_eval do
  include Encryptable
end

在此处阅读有关rails 4的更多信息:How to use concerns in Rails 4

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读