如何从公寓公共模式创建has_many关系

时间:2017-06-29 20:13:17

标签: ruby-on-rails has-one apartment-gem

我的模型设置

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

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

0 个答案:

没有答案