Rails如何按平均价格订购记录

时间:2013-09-07 11:02:04

标签: ruby-on-rails controller average records

我试图按价格设置控制器返回的记录顺序。问题是有3种不同的价格选择,每条记录只能使用1种价格,2种价格或所有价格。所以我决定按平均价格设定头寸。为了得到平均价格,我预计将可用价格的总和除以可用的价格数。

目前我按ID设置订单:

def category
    @manufacturers = Manufacturer.order("manufacturers.id ASC").where(:visible => true)
end

每条记录都有:hp_price,:ch_price,:mp_price(所有月付款价格)所以我想我想检查每个选项是否已设置,如果是这样,将其添加到一个数组,我可以稍后运行计算(也许这不是最好的方法?)。

我对如何做到这一点感到有点难过(我是铁杆新手)。我可以在控制器中在线执行此操作吗? (如果是这样我甚至会这样做?)

产生影响的东西:

def category
    @manufacturers = Manufacturer.order((manufacturers.hp_price+manufacturers.ch_price+manufacturers.mp_price)/3 ASC).where(:visible => true)
end

或者另一种可能性是为每条记录添加一个平均价格列,并在创建记录时将其计算出来(虽然这对我来说有点过分了解)。

我想我想知道在这样的情况下你会考虑什么样的最佳做法,就像我说的,我是新手,我担心如果我只是混淆我会提出的解决方案通过会有点hacky!

1 个答案:

答案 0 :(得分:0)

参考这样的列,它应该可以工作

def category
  @manufacturers = Manufacturer.order("(hp_price+ch_price+mp_price)/3 asc").where(:visible => true)
end