0

我的模型设置

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)将分配模型分发到公寓模式,这很困难,因为我必须收集分配并将它们同步到外部数据源。

在这种情况下最好的解决方案是什么?

4

0 回答 0