如何向 ActiveRecord::Base 添加方法?

san*_*nds 4 activerecord ruby-on-rails-3

我正在尝试创建一个自定义的 ActiveRecord::Base,其中包含有关连接的其他元数据。我看到有两种方法可以解决这个问题:

1.) 继承ActiveRecord::Base并在该子类中添加方法和字段。

2.) 将 ActiveRecord::Base 对象封装在我自己的类中

1 存在各种问题,无法覆盖初始化,奇怪的问题似乎没有我添加的自定义方法,等等。

undefined method `set_profile' for #<Class:0xf041f0>
Run Code Online (Sandbox Code Playgroud)

2 由于使用 ActiveRecord::Base.new 的问题,我一直无法弄清楚

我正在尝试创建一个通用的 ActiveRecord 类,我可以在其上动态建立连接和设置表名称(即没有此 ActiveRecord::Base 代表的基础表),但我似乎找不到一种方法来完成它。有任何想法吗?

这有效:

  class MyTable < ActiveRecord::Base
    establish_connection $config['custom-db-config'];
    set_table_name 'MY_TABLE'
  end
Run Code Online (Sandbox Code Playgroud)

但我需要一个可以反复调用这些内容的课程。

Ben*_*Hao 5

不完全确定为什么你会想要这个,但也许你可以尝试这个?

module ActiveRecord
  class Base
    def self.your_method
      # implementation goes here
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

您需要保存该文件并将其放入config/intializers.