ruby-on-rails - 使用 Postgres 按年分组

标签 ruby-on-rails postgresql ruby-on-rails-5

我希望仅在 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/

相关文章:

ruby-on-rails - Rails5 中似乎 sidekiq 不支持 actioncable ?

validation - 删除 Rails 5 上 belong_to 属性所需的验证

javascript - 在特定 View 的情况下隐藏部分按钮

ruby-on-rails - 删除默认的 :size from form. text_field 方法

ruby-on-rails - Ruby 和 OpenStruct 只允许访问部分数据

Postgresql AF​​TER UPDATE 触发器 OLD 没有字段

ruby-on-rails - 具有语言环境的高压 gem 路由

ruby-on-rails - Ruby - 查找具有相同属性的所有记录并将它们分组

sql - 按 created_at 搜索时 PostgreSQL 的结果不正确

ruby-on-rails - 如何在不获取 ActionController::RoutingError 的情况下删除 Rails 中未使用的 css?