【发布时间】:2011-11-10 12:09:05
【问题描述】:
我对 Rails 和 sql 都比较陌生。我在生产中使用 postgres。
我有一个Like 模型,通过多态性,它具有likeable_type 和likeable_id 属性,这就是我的Photo 模型中的项目被用户“喜欢”的方式。当喜欢的对象具有Photo 作为likeable_type 并且照片的ID 为likeable_id 时,我也可以通过like.likeable 的类似对象访问照片。
我的问题:我希望能够获得过去 24 小时内最喜欢的照片列表,其中最喜欢的一张在顶部,最不喜欢的一张在底部。我该怎么做?
到目前为止,我知道我的代码应该类似于
likes = Like.find(:all, :conditions => { :created_at => 1.days.ago.utc...Time.now.utc, :likeable_type => "Photo" })
likes = likes.group( --- something here --- , SUM( --- something here --- ))
但我不太能弄清楚正确的语法应该是什么。
任何帮助将不胜感激!
【问题讨论】:
-
换句话说,我要做的是计算在过去 24 小时内在 like 表中创建了每个 likeable_id 的数量。有人可以帮忙吗?
-
任何提示也会有所帮助。真的需要解决这个问题,有人可以帮忙吗?
标签: mysql ruby-on-rails postgresql ruby-on-rails-3.1 rails-postgresql