我的模型设置
class User < AR
has_many :books
...
end
class Book < AR
belongs_to :user
...
end
书籍在单独的公寓中,用户在公共模式中。
我想在公共模式中添加一个名为 assignment 的共享模型(将一本书分配给用户),该模型将具有以下设置
class User < AR
has_many :books
has_many :assignments
...
end
class Book < AR
belongs_to :user
has_one :assignment
...
end
class Assignment < AR
belongs_to :user
belongs_to :book
...
end
问题在于belongs_to :book
分配模型是共享的部分,无法轻松指定书籍所在的模式。不同模式的书籍之间也可能发生 id 冲突,这使过程进一步复杂化。如我所见,我可以:
1)使用范围,为书指定公寓模式
2) 在赋值中为 book 属性使用自定义的 getter 和 setter,并在 getter 中获取所需的对象。
3)将赋值外键放入书籍模型中,这将是最简单但不那么干净(我希望能够在没有连接的情况下获得 book_id/schema)
4)将分配模型分发到公寓模式,这很困难,因为我必须收集分配并将它们同步到外部数据源。
在这种情况下最好的解决方案是什么?