テーブル名は動的であり、モデル (タスク) の属性 (survey_id) に依存するため、関連付けられたモデル (limesurvey) のテーブル名を設定する必要があります。
私の現在の実装では、タスクが初期化されるときにテーブル名を設定します。
class task < ActiveRecord::Base
after_initialize :setTablename
has_one :limesurvey
def setTablename
Limesurvey.table_name = "lime_survey_#{self.survey_id}"
end
end
この実装は機能しますが、setTablename-method は必要ではありませんが、すべてのタスクで呼び出されるという欠点があります。
関連付けlimsurveyがロードされる前にのみsetTablenameを実行するにはどうすればよいですか?