采用标准 NewsFeed 模型 (id,user_id)
如何在 NewsFeed 模型中查询每月的记录数,然后排除一些 user_id?
结果将产生:
Jan - 313
Feb - 3131
Mar - 44444
etc...
是否有一种简单的方法可以使用 Rails 来执行此操作,或者您需要为每个月编写一个查询吗?
谢谢
最佳答案
在 Rails 4 中,执行此操作的方法是在模型上创建范围。
class NewsFeed < ActiveRecord::Base
scope :group_by_month, -> { group("date_trunc('month', created_at) ") }
scope :exclude_user_ids, -> (ids) { where("user_id is not in (?)",ids) }
end
然后你可以这样调用它:
@counts = NewsFeed.exclude_user_ids(['1','2']).group_by_month.count
这会给你:
{2014-01-01 00:00:00 UTC=>313, 2014-02-01 00:00:00 UTC=>3131}
然后输出(haml):
- @counts.each do |m|
= "Month: #{m[0].strftime("%b")}, Count: #{m[1]}"
这会导致:
Month: Jan, Count: 313
Month: Feb, Count: 3131
关于ruby-on-rails - 如何编写一个 Rails 查询来按月返回计数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10608765/