2014-07-04 64 views
0

我爲兩種方法創建了以下語法,並且不能將它們放在一起。而且我希望有寫這個較短的方式,因爲它不是真正的瘦:獲得數組中散列/對象的最小屬性

@e = @c_entries.find_all{|i| i.order_no.between?(1,5)} 

給我的所有對象的數組,這是order_no是1和5之間!

@f = @c_entries.all(:select => :order_no).collect(&:order_no).min 

創建所有order_no的數組,並給我最小!

我現在正在嘗試的是獲取order_no在1到5之間的所有對象中的最小order_no儘可能短。

任何想法?

+0

什麼問題結合這兩個? –

+0

我在rails控制檯中試過了,它給了我一個方法錯誤。 '@e = @ c_entries.find_all {| i | i.order_no.between?(1,5)}。all(:select =>:order_no).collect(&:order_no).min' ..並且它的方法很長,因爲控制器必須做的更短那很多部分。它用於一個巨大的映射,所以我不想使用太多的查詢。 – Syk

+0

我的天啊。你不知道這些意思是什麼意思,是嗎? –

回答

2

如果@c_entries包含在你的應用程序特定型號的集合,你可以採取的ActiveRecord的查詢界面的優勢:

@c_entries.where(order_no: 1..5).select(:order_no).min 

還有其他各種方式來縮小查詢:http://guides.rubyonrails.org/active_record_querying.html#conditions

+0

不錯,效果很好。只需添加'.order_no'即可獲得order_no。 – Syk