2013-08-21 3 views
2

У моего приложения есть таблица товаров со столбцами цена и счет. Мне нужно отобразить список предметов, цена которых умножена на count>, чем некоторое число. Теперь мой код выглядит следующим образомRails рассчитывается, где

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

Могу ли я изменить его как-нибудь? Интересует любые варианты. Спасибо

+0

Спасибо за ответ, но мне нужен список элементов, где отсчет * цена> = 100 =) не является подсчет –

+0

Вы пробовали первый запрос из моего поста ? – MrYoshiji

+0

SQLite3 :: SQLException: рядом с "*": синтаксическая ошибка: –

ответ

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) 
Смежные вопросы