按年过滤记录

时间:2012-12-23 18:55:03

标签: ruby-on-rails ruby-on-rails-3.2

需要使用created_at字段按年过滤文章。

我在这样的文章中获得了多年的链接:

文章助手:

  def artcles_by_years
    Article.uniq.pluck("EXTRACT(YEAR FROM created_at)")
  end

index.html.erb

  <% for art in artcles_by_years do %>
    <%= link_to art %>
  <% end %>

显示:2009 2010 2011 2012,确定无法工作的链接。

问题:

如何在控制器中构建工作链接和查询以按年过滤文章,例如按2009并返回2009年创建的所有文章。 谢谢。

1 个答案:

答案 0 :(得分:6)

您可以为模型添加范围

scope :year, lambda{|year|
  where(" EXTRACT(YEAR FROM created_at) = ? ", year ) if year.present?  
}

并使用控制器中的范围:

@articles = Article.year(params[:year])

将链接显示为:

<%= link_to art, articles_path( :year => atr) %>