【问题标题】:Rails model design for has_many with filter model带有过滤器模型的 has_many 的 Rails 模型设计
【发布时间】:2017-03-09 12:21:49
【问题描述】:

我有一个Client 型号has_many :orders,但每个订单也有belongs_to :order_type。这里的OrderType 基本上用作过滤表,因为每个订单都有一组公共属性,如:category, :size, :date,并且有几千个条目,所以对我来说将它保存在一个单独的模型中而不是保留这些信息是有意义的每个单独的订单条目。

我对如何设置关联以及在哪里需要连接表有点困惑,所以我基本上可以查询如下内容:

c = Client.find(x)
order_conditions = {date: "2016-01-01".."2016-01-31", category: "x")

我需要如何设置模型和关联/连接表,以便我可以获得与给定客户的特定 OrderType 条件列表匹配的所有订单?

根据this12.1.3 Joining Multiple Associations,我似乎需要在某处进行多重连接

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-4 rails-activerecord


    【解决方案1】:

    你应该试试

    def Client
      has_many :orders
    end
    
    def Order
      belongs_to :client
      belongs_to :order_type
    end
    
    def OrderType
      has_many :orders
    end
    
    
    # To query
    client.orders.joins(:order_type).where(order_types: { date: date })
    

    【讨论】:

      【解决方案2】:

      你不能做吗

      OrderType belongs_to :order

      并且 订单 has_one :order_type

      然后您可以找到所有匹配订单类型的订单。 (虽然我可能只在订单数据库中包含 order_type)

      我是个新手,如果这是废话,请道歉,请删除:)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-06-29
        • 2011-07-06
        • 1970-01-01
        • 2023-03-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-05-26
        相关资源
        最近更新 更多