2011-03-10 19 views
2

我正在使用Rails應用程序,我需要返回特定行的最大值,但也需要返回行內容的其餘部分。Ruby ActiveRecord最大

代碼:

medias = Media.maximum(:id, :conditions => ['medias.image = true AND medias.subscriber_id = 37'], :group => ['subscriber_id']) 

這僅返回ID和subscriber_id,我需要返回所有的不只是那些兩排。

示例:在我的媒體表中,用戶可以上傳多張照片。我試圖按用戶ID分組,並獲得所有用戶的最後一個條目。所以基本上我需要一個最大限度地查找。

+0

'最大值訂購什麼特定row'?在這種情況下,哪些字段涉及最大值計算? – Zabba 2011-03-10 19:50:29

+0

添加一些示例數據,以便幫助您的人不必爲了幫助您而自行創作。 – Zabba 2011-03-10 19:52:20

+0

用戶可以上傳多張照片。我希望獲得每個訂閱者的最新上傳。所以說,如果用戶上傳4張照片,比如說一個月前,我正在循環播放每張訂閱者的照片,我需要能夠爲每個訂閱者獲取最後一行......這是否合理? – dennismonsewicz 2011-03-10 19:52:30

回答

4
medias = Media.maximum(:id, :conditions => ['medias.image = true AND medias.subscriber_id = 37'], :group => ['subscriber_id']) 
trythis = Media.find(medias) 
+0

試過這個,它不工作。這裏是錯誤:'migrate_photo.rb:21:在每個:未定義的方法ID爲[37,137]:Array(NoMethodError)'我已經更新我的描述以上更多信息 – dennismonsewicz 2011-03-10 19:38:34

+0

'trythis = Media.find(medias) – fl00r 2011-03-10 19:46:42

+0

試過了,我得到了'/usr/local/lib/ruby/gems/1.9.1/gems/activerecord-3.0.4/lib/active_record/relation/finder_methods.rb:296:in'find_one':Could not找到媒體ID = {37 => 137}(ActiveRecord :: RecordNotFound)' – dennismonsewicz 2011-03-10 19:50:21

2
Media.order("subscriber_id DESC").limit(1).where("image = true").where("subscriber_id = ?", 37) 

我想你想找到的最大subscriber_id,但如果沒有,只需更換與你在

+0

這將適用於特定用戶,如果我想要查找所有媒體對象,但是按用戶ID分組,則會怎樣? – dennismonsewicz 2011-03-10 19:45:00

+0

因此,您希望每個用戶都擁有最新的媒體嗎? – 2011-03-10 21:24:59

+0

是的,這是我正在尋找 – dennismonsewicz 2011-03-10 21:25:43