1

構成スイッチに応じて 2 つの異なるテーブルを参照する必要があるActiveRecordクラスがあるため、次のことを行う予定です。

def table_name
  config_is_on? ? :table1 : :table2  
end

table_nameこのモデルに対してクエリが実行されるときにメソッドが常に呼び出されるかどうか疑問に思っています。構成が変更されたときにアプリケーションが再起動されないため、この値をキャッシュできません。

アプリケーションの起動/初期化中にActiveRecord常に or を 1 回だけ評価しますか? キャッシュされている場合、毎回table_name強制的に評価するにはどうすればよいですか?table_name

4

1 に答える 1

0

テーブル名だけでなく、列の定義も。Apartmentgemのようなスキーマ設定を使用することをお勧めします。リクエストの状態に応じて、データベース内の実際のテーブル検索パスは何かに設定されます。したがって、2つのスキーマを実行できます。1つは最初のテーブルで、もう1つは2番目のスキーマで(残りのテーブルは1つのスキーマだけにある場合があります)、検索パスを変更すると、異なるデータが取得されます。

于 2012-11-06T09:16:59.290 に答える