我有模板和模板版本。一个模板可以有多个 template_version,但在任何给定时间只有一个活动的 template_version。我有以下两个模型:
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 至关重要,这就是为什么 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 以获取与模板关联的 id,然后必须保存它以交回模板 id 以填充模板版本。
有没有办法完成这一切?