我的模型设置
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
部分,因为Assignment模型是共享的,无法轻松指定该书所在的模式。不同模式之间的书籍之间也存在id冲突的可能性这进一步使过程复杂化。我认为我可以:
1)使用范围,指定图书的公寓图案
2)在赋值中使用book属性的自定义getter和setter,并在getter中获取所需的对象。
3)将赋值外键放在书籍模型中,这将是最简单但不干净的(我希望能够在没有连接的情况下获得book_id / schema)
4)将分配模型分配给公寓模式,这很困难,因为我必须收集分配并将它们同步到外部数据源。
在这种情况下,最佳解决方案是什么?