我对 Rails 很陌生,最近我发现我理解 activerecords has_one关联与它的实际工作方式相反。参考 ruby onrails guide中的示例,我认为应该是供应商持有其account_id,因为我认为强制每个账户持有其供应商是没有意义的。
因为我真的不明白为什么,或者根本不同意在其他对象中维护它的外键的对象,所以我不知道我的简单问题的正确 rails 解决方案是什么:我有两个对象 - document,和草稿。每个文档都有很多草稿,其中一个被标记为当前草稿。我想象表格布局是这样的:
table document
id
current_draft_id
table draft
id
document_id
text
我在这里寻找的是类似于has_one关联的东西,但是相反,因此文档将保持并维护current_draft_id。使用belongs_to不是一种选择,因为它的行为不同。例如,我希望document.current_draft = new_draft正确更新 foreign_key。
如何在rails中解决这个问题?
--更新 1
为了澄清我的问题,请假设当前的草稿与created_at和updated_at字段无关,因此范围不会这样做。
从表设计的角度来看,将当前字段添加到草稿表将是一个奇怪的举动。我还计划将有关已发布草稿的信息添加到文档对象中,并且在草稿表中增加此类信息似乎是一个奇怪的步骤。
我喜欢 Amesee 的想法,但我仍然有一些内在的阻力,类似于将当前 列添加到草稿表中。