我有3张桌子:
users
details
documents
模型看起来像:
class User < ApplicationRecord
has_many :details
has_one :document
end
class Detail < ApplicationRecord
has_one :document
belongs_to :user
end
class Document < ApplicationRecord
belongs_to :user
belongs_to :detail
end
可能有许多没有
details
关联的document
(版本化)。我将 user_id
和 detail_id
都存储在 document
上,因为 detail
在创建 document
之后的某个时间可能不存在。这最终会引入一些数据重复,因为一旦 user
存在,就可以通过 detail
访问 detail
。有没有更好的方法来做到这一点而不会导致这种重复?
另一个语义说明是
document
也与 user
的其他几个孩子相关联,所以对我来说,document
与 user
的联系似乎也不完全正确仅通过他们的一个共享连接(如果我要连接他们 through
details
协会)。