Ruby on rails 如何创建从公寓公共模式到

Ruby on rails 如何创建从公寓公共模式到,ruby-on-rails,has-one,apartment-gem,Ruby On Rails,Has One,Apartment Gem,我的模型设置 class User < AR has_many :books ... end class Book < AR belongs_to :user ... end class用户

我的模型设置

class User < AR
   has_many :books
   ...
end

class Book < AR
   belongs_to :user
   ...
end
class用户
书籍在单独的公寓中,用户在公共模式中

我想在公共模式中添加一个名为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
class用户
问题在于
属于:book
部分,因为分配模型是共享的,无法轻松指定书所在的模式。此外,不同模式的书籍之间也可能存在id冲突,这会进一步使过程复杂化。在我看来,我可以:

1) 使用作用域,指定书籍的单元架构

2) 对赋值中的book属性使用自定义getter和setter,并在getter中获取所需的对象

3) 将赋值外键放在books模型中,这是最简单的,但没有那么干净(我希望能够在没有连接的情况下获得book_id/schema)

4) 将分配模型分发到单元模式,这将很困难,因为我必须收集分配并将它们同步到外部数据源


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

用户可以通过作业直接获得一本书?我不知道你想做什么。像多态关联这样的东西能起作用吗?关联表中有
用户id
图书公寓
图书id
?@michael我该如何强制图书检索更改公寓?从作业模型来看,我认为如果这本书改变了公寓,那么与这本书相关的所有作业都需要更新以反映这一变化。但仅仅改变分配模式可能不会改变图书公寓