【问题标题】:Filtering a table in rails according to a particular column values根据特定列值过滤rails中的表
【发布时间】:2016-01-06 09:53:01
【问题描述】:

我的 rails 应用程序中有一个汽车模型,它包含三列 Car_id 、 car_name 和fuel_type。所以在我的表中,car_name 出现了很多次。

我想知道如何过滤这个 Car 表,以便一个 car_name 在返回的数组中只出现一次?

我希望返回完整的过滤表,而不仅仅是不同的汽车名称。

【问题讨论】:

  • car_name 来了很多次是什么意思?
  • 我的意思是像现代 I10 这样的汽车的名字排在了很多排。我想过滤表,以便这个名称在返回的表中只出现一次。

标签: ruby-on-rails activerecord


【解决方案1】:

这是你要找的吗?

Car.group(:car_name).all

【讨论】:

  • 此函数在开发中运行良好(sqlite 数据库)但在 Postgres 数据库中出现错误
  • 此代码在 sqlite 数据库中运行良好,但在 postgres 数据库中出现错误。这是我得到的错误 PG::GroupingError: ERROR: column "cars.id" must appear in the GROUP BY 子句或用于聚合函数
【解决方案2】:

也许你应该使用这个:

cars = Cars.all.uniq {|c| c.car_name}

这将通过car_name 属性获得过滤后的汽车数组。

【讨论】:

  • 不,这不是在进行过滤,而是根据表的主键 car_id 选择唯一行,因此它会返回完整的表。我希望 uniq 函数在 car_name 列上工作,而不是在 car_id 列上工作
  • 我的回答中有car_name。 O_O。
  • 我不知道为什么,但这不起作用。如果我使用 Car.select(:car_name).distinct 函数,那么我可以获得所有唯一名称,但我需要完整的行而不仅仅是单个 car_name
猜你喜欢
  • 1970-01-01
  • 2021-06-10
  • 1970-01-01
  • 2015-03-26
  • 2019-11-14
  • 2014-08-19
  • 1970-01-01
  • 2018-09-14
  • 1970-01-01
相关资源
最近更新 更多