テンプレートとテンプレートバージョンがあります。テンプレートには多くのtemplate_versionsを含めることができますが、常にアクティブなtemplate_versionは1つだけです。私は次の2つのモデルを持っています:
class Template < ActiveRecord:Base
has_many :template_versions, :class_name => 'TemplateVersion'
belongs_to :active_version, :class_name => 'TemplateVersion'
end
class TemplateVersion < ActiveRecord:Base
belongs_to :template
has_one :template
end
テンプレートにはアクティブなtemplate_versionが1つしかないことが重要です。そのため、active_templateのキーはテンプレートモデルにあります。Railsコンソールでテストするまで、これはすべて問題ないようです。
t = Template.new()
tv = TemplateVersion.new()
t.active_version = tv
t.save
version = t.active_version //returns version
version.template_id //returns nil
テンプレートはアクティブなtemplate_versionを認識していますが、問題は、template_versionがどのテンプレートに属しているかを認識していないことです。これは、DBへの挿入時に、テンプレートを関連付けるIDを取得するためにtemplate_versionが作成され、テンプレートバージョンを設定するためにテンプレートIDを返すために保存する必要があるためだと思います。
これをすべて達成する方法はありますか?