简体   繁体   English

将存档的SQL转换为Rails ActiveRecord

[英]Convert sql for archives to Rails ActiveRecord

I'm having this class method inside my Post model for archives 我的档案模型中有这个类方法

class Post < ActiveRecord::Base
  def self.archives
    # fetch archives
  end
end

How can I convert this sql query to ActiveRecord query in order to put it in the self.archives method? 如何将此sql查询转换为ActiveRecord查询以将其放入self.archives方法中?

SELECT YEAR(`created_at`) AS `year`, MONTHNAME(`created_at`) AS `month`, COUNT(`id`) AS `total` 
FROM `posts` 
GROUP BY `year`, `month` 
ORDER BY `year` DESC, MONTH(`published_at`) DESC

You can try something like this: 您可以尝试如下操作:

def self.archives
  Post.select("YEAR(created_at) AS year, MONTHNAME(created_at) AS month, COUNT(id) AS total")
    .group("year, month")
    .order("year DESC, MONTH(published_at) DESC")
end

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM