以前ActiveRecord::Base.set_table_name
は、動的に作成された ActiveRecord クラスにテーブル名を設定していました。ここで、後でその値を取得する方法を知る必要があります。API ドキュメントには、これを行う方法については何も言及されていません。また、テーブル名とはキーが異なるため、ActiveRecord クラス名からテーブル名を派生させることはできません。
ここに私がやっていることのより良い例があります
table_klass = Class.new(ActiveRecord::Base)
ActiveRecord::Base.const_set(const_name,table_klass)
app = @app
table_klass.class_eval do
after_save do
@@channel.push self
end
set_table_name t.server_table
establish_connection(
:adapter => "mysql2",
:host => app.db_host,
:username => app.db_user,
:password => app.db_pass,
:database => app.db_name
)
end
この場合、const_name
= Test でデータベース名が Database の場合、ActiveRecord::Base::DatabaseTest のクラスを作成する必要があります。しかし、それに対して table_name を呼び出すと、未定義のローカル変数またはメソッドが取得されます。クラスで table_name を呼び出す必要がありますか?
更新:
電話して動作させましたinstance.class.table_name