复杂模型关联 - Rails

时间:2017-05-25 16:55:53

标签: ruby-on-rails ruby-on-rails-5 models model-associations

所以我有一些复杂的模型关联设置,我似乎无法做得很好。

我有:

                           Owners     Doors     
    Clients -> Orders -> <    |     /
                           Property - Windows
                                    \
                                      Heating/Cooling

所以思考过程是每个属性可以有许多门,窗户,加热/冷却系统和所有者,以及每个所有者可以有很多属性

当提交的订单仅包含所有者属性信息(地址等)时,我们会查找 >物业的门,窗,加热/冷却系统,更新订单,然后将其发回客户端

现在我有我的模型设置,(为了节省空间而压缩)

Clients has_many :orders

Order -> belongs_to :property, :clients
Order -> has_many :doors, :windows, :heating/cooling, through: :property

Property -> has_many :doors, :windows, :heating/cooling, :owners
Doors, Windows, Heating/Cooling, Owners -> belongs_to :property

所以我的问题是我希望能够知道在哪个订单上拉出了哪些门,窗和加热/冷却。所以我会说他们应该属于订单但是如果多个订单进入同一个属性,我不希望我的数据库中的那些模型多次为所述属性获取相同的信息只是因为他们进来了不同的订单,同样希望能够查看房产本身,并查看所有相关的订单,门,窗,加热/冷却。

我希望我的解释很明确,因为我对铁轨以及协会如何运作以及他们的能力仍然相当新,所以任何见解都会非常有用,提前谢谢。

1 个答案:

答案 0 :(得分:0)

似乎最快的方法是将一个序列化为数组的order_ids列添加到门/窗/加热/冷却表上。您需要应用程序逻辑来维护列状态。

不相关:门/窗/加热/冷却模型是否足够独特,可以像items表那样做多态并且不起作用?