我的应用程序有列价格和计数的项目表。我需要显示价格乘以计数>而不是某个数字的项目列表。现在我的代码看起来像这样
items.where("count * price >= 100")
我可以改变它吗?对任何变体感兴趣。谢谢
我的应用程序有列价格和计数的项目表。我需要显示价格乘以计数>而不是某个数字的项目列表。现在我的代码看起来像这样
items.where("count * price >= 100")
我可以改变它吗?对任何变体感兴趣。谢谢
如果您需要重新使用此计算,您可以选择它并给它一个 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)