4

接続に関する追加のメタデータを含むカスタマイズされた ActiveRecord::Base を作成しようとしています。これについては、次の 2 つの方法があります。

1.) ActiveRecord::Base から継承し、このサブクラスにメソッドとフィールドを追加します。

2.) ActiveRecord::Base オブジェクトを自分のクラス内にカプセル化する

1には、初期化をオーバーライドできない、追加したカスタムメソッドがないように見える奇妙な問題など、あらゆる種類の問題があります.

undefined method `set_profile' for #<Class:0xf041f0>

2 ActiveRecord::Base.new の使用に問題があるため、把握できませんでした

私は、動的に Establish_connection & set_table_name できる多目的の ActiveRecord クラスを作成しようとしています (つまり、この ActiveRecord::Base が表す基礎となるテーブルが 1 つありません) が、それを達成する方法を見つけることができないようです。何か案は?

これは機能します:

  class MyTable < ActiveRecord::Base
    establish_connection $config['custom-db-config'];
    set_table_name 'MY_TABLE'
  end

しかし、これらを繰り返し呼び出すことができるクラスが必要です。

4

2 に答える 2

5

なぜそれが必要なのか完全にはわかりませんが、これを試すことができますか?

module ActiveRecord
  class Base
    def self.your_method
      # implementation goes here
    end
  end
end

このファイルを保存して、config/intializers.

于 2012-11-07T07:56:51.270 に答える
0

ActiveRecord :: Baseクラスを拡張して、ActiveRecord :: Baseを継承するクラスから直接呼び出すことができるメソッドを動的に追加することもできます...多くのacts_asプラグインは、この方法に従って定義および作成されます...

于 2012-11-07T07:59:43.743 に答える