我希望仅在 created_at 日期字段中按年份分组。我正在使用 postgres,发现它与使用 Mysql 不同。
我希望只显示年份并在搜索参数中使用它们。
我收到以下错误:缺少属性: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 %>
Controller (索引)
@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)')
最佳答案
您在选择中缺少 as
,
.select('extract(year from created_at) AS created_at_year')
然后你可以调用@years.map(&:created_at_year)
关于ruby-on-rails - 使用 Postgres 按年分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52509873/