2011-03-10 55 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