Rails模型最佳实践

时间:2015-06-08 08:51:05

标签: ruby-on-rails model-view-controller

我有一个在线订购应用程序。这是我的结构:

订单包含许多items_variations,item_variations属于item。订单属于客户。物品有一个价格(列)。

现在在Order模型中,我有一个查询来查找订单金额,以及个别金额,如此

def self.order_amount
  Order.joins(:items).where(customer_id: customer_id).sum('items.price')
end

def amount_item
  ItemVariation.joins(:items).where(order_id: self.id).sum('items.price')
end

这是制作此型号的正确方法吗? AFAIK,我不应该在order.rb中使用ItemVariation,但我想不出更好的方法。

1 个答案:

答案 0 :(得分:0)

您可以使用has_many: through

在Order.rb中:

has_many :items, through: :item_variations

def amount_item
    items.sum(:price)
end