2013-09-13 4 views
0

У меня этот код в моем представлении индекс, который показал цены на мои товары.выберите минимальное значение цена рубина на рельсах

 <% for import_price in ItemImportPrice.find(:all, 
     :conditions => ['itemCode = ? and beginDate = ?', item.short_name, item_days.day) ], 
             :order => ['price asc']) %> 
      <%= import_price.price %> 
      <%= import_price.superItemType %> 
      ... 
     <% end %> 

По мнению у меня есть следующий результат:

89.0  I 
99.0  I 
109.0 I 
119.0 I 
129.0 I 
129.0 O 
139.0 O 
149.0 O 
159.0 O 
439.0 B 
459.0 B 
529.0 D 
849.0 D 
949.0 D 

Как сделать это будет показан только минимальная цена за superItemType (I, O, B, D)?

Если я добавляю: group => "superStateroomType", он отображает 4 элемента, но цены не минимальны.

P.S. Может быть сделать этот метод, но я не знаю, как применять его для всех ...

ItemImportPrice.all(:select => "Min(price) as min_price", :conditions => ["itemCode = ? and beginDate = ?", item.short_name, item_days.day]).first.min_price 
+0

, пожалуйста, проверьте документацию на минимальную функцию в рельсах http://api.rubyonrails.org/classes/ActiveRecord/Calculations.html#method-i-minimum –

+0

Почему вы вкладываете всю эту логику в свое мнение? –

+0

, потому что item.short_name и item_days.day определены только в представлении – Andrew

ответ

0

Пожалуйста, попробуйте с

ItemImportPrice.select('MIN(price) AS min_price, superItemType').group('superItemType') 
+0

этот метод ошибка «частный метод' select »вызван для # <класс: 0x7fd0dfdc8360>" p.s. рельсы 2,3 рубины 1.8.7 – Andrew

0

Вы можете использовать его как это:

ItemImportPrice. all (: select => "superItemType, Min (price) as min_price",: conditions => ["itemCode =? and beginDate =?", item.short_name, item_days.day],: group => "superItemType"). first.min_price

Смежные вопросы