首页 > 解决方案 > 使用 Postgres 按年份分组

问题描述

我希望仅在 created_at 日期字段中按年份分组。我正在使用 postgres,发现它与使用 Mysql 不同。

我希望仅显示年份并在搜索参数中使用它们。

我收到以下错误:missing attribute: created_at

搜索表格

<%= form_tag(page_path, method: :get) do %>
  <%= select_tag :select_year, options_for_select(@years.map { |m| m.created_at.year }) %>
  <%= submit_tag 'Search', name: nil %>
<% end %>

控制器(索引)

@trials = if params[:select_year]
  Product.where('extract(year from created_at) = ?', "#{params[:select_year]}")
  else
  Product.where('extract(year from created_at) = ?', Time.now.year))
  end

@years = Product.group('extract(year from created_at)').order('extract(year from created_at) DESC').select('extract(year from created_at)')

标签: ruby-on-railspostgresqlruby-on-rails-5

解决方案


as的选择中缺少一个,

.select('extract(year from created_at) AS created_at_year')

然后你可以打电话@years.map(&:created_at_year)


推荐阅读