ruby-on-rails - Ruby:如何在 Rails 3 模型中获取所有可用年份

标签 ruby-on-rails ruby ruby-on-rails-3

我的 Rails 3 应用程序中有很多文章。要将链接放在索引页上,我怎样才能在数组中获取所有可用年份(从 created_at 属性)来做这样的事情

years.do | year |
 = link_to year, articles_path(:year => year)

任何想法如何以最小的努力做到这一点(关于数据库查询)?

您好, 阿德里安

EDIT1:这可能不是最好/最快的。但是 fl00r 提醒我 pluck:

@years = []

Article.pluck(:created_at).each do | year |
    @years << year.strftime("%Y")
end

@years = @years.uniq.reverse

最佳答案

如果您只想要一系列年份,则可以替代现有答案:

@years = Article.uniq.pluck("EXTRACT(YEAR FROM created_at)")

生成以下 SQL 查询:

SELECT DISTINCT EXTRACT(YEAR FROM created_at) FROM `articles`

关于ruby-on-rails - Ruby:如何在 Rails 3 模型中获取所有可用年份,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10013138/

相关文章:

ruby-on-rails - 为什么 rspec 在 rails 3.1.0 中有时会有一天的差异?

Ruby - 如何替换之前的 :each with a let?

ruby - 小端位掩码

ruby-on-rails-3 - Rails 教程第 5 章练习 3 - 原来的 full title 函数做了什么?

ruby-on-rails - 如何获得带有纸迹的模型的原始属性

ruby-on-rails - 代码中的管理员凭据?

ruby-on-rails - curl : (1) Protocol https not supported or disabled in libcurl

ruby - Groovy 相当于 ruby​​ all 和 none

ruby-on-rails - 如何设置 config.action_controller.default_url_options = { :host = '#' '} on per environment basis

ruby-on-rails - NoMethodError(未定义方法 `year' 为 "%m/%d/%Y %H:%M":String)