【问题标题】:Complex Model Associations - Rails复杂模型关联 - Rails
【发布时间】:2017-05-25 16:55:52
【问题描述】:

所以我有一些复杂的模型关联设置,我似乎无法完全正确。

我有:

                           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

所以我的问题是我希望能够知道哪些门、窗和加热/冷却是按哪个顺序拉动的。所以我会说它们应该属于订单但是如果多个订单进入同一个属性,我不希望我的数据库中的这些模型的相同信息多次用于所述属性,只是因为它们进入不同的订单,同样希望能够查找属性本身并查看所有相关的订单、门、窗、供暖/制冷。

我希望我的解释很清楚,因为我对 Rails 以及关联的工作方式及其功能还很陌生,因此任何见解都会非常有帮助,提前致谢。

【问题讨论】:

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


    【解决方案1】:

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

    不相关:门/窗/加热/冷却模型是否足够独特,以至于像 items 表这样的操作并使其具有多态性不起作用?

    【讨论】:

    • 门/窗/加热/冷却模型是独一无二的,足以保证他们自己的模型/桌子。虽然某些属性重叠(大小、表面积等),但它们有许多自己的属性。我最初的想法是让每个模型belongs_to 都拥有propertyorders,但我担心的是,如果我们已经知道它有什么样的门或窗的现有财产的订单,订单将创建一个新的门或窗记录,而不是引用当前的。我想知道是否应该将模型设置为多态并将它们在连接表上连接到两者。
    猜你喜欢
    • 1970-01-01
    • 2017-01-31
    • 2021-08-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多