Rails计算在哪里

时间:2013-08-21 13:26:01

标签: ruby-on-rails activerecord where

我的应用程序包含列表价格和计数的项目表。 我需要显示价格乘以计数>的项目列表。比一些数字。 现在我的代码看起来像这样

items.where("count * price >= 100")

我可以改变它吗?对任何变体感兴趣。 谢谢

1 个答案:

答案 0 :(得分:2)

如果您需要重新使用此计算,可以选择它并为其指定SQL别名:

items = items.select('items.*, COUNT(items.*) AS count, (count * items.price) AS total').where('total >= 100')

然后直接使用总变量:

items.first.total # => Should return the count*price
items.first.count # => Should return the count
items.first.id # => You can call all the other attributes of an Item

你也可以制作一个范围:

class Item < ActiveRecord::Base

   scope :total_more_than, lambda do |total|
     self.select('items.*, COUNT(items.*) AS count, (count * items.price) AS total').where('total >= ?', total || 100) # if not total given, will use 100
   end

并像这样使用它:

items.total_more_than(100)