我有一个项目Ruby 2.4.0和Rails 5.0.1,模型如下:

class Hospital < ApplicationRecord

  validates_presence_of :name
  validates_presence_of :state
  validates_presence_of :unit
  validates_presence_of :site

  def self.get_hospitals
    hospitals = order(:name).all
    grouped = hospitals.group_by(&:state)
  end
end

然后,我使用“分组”散列填充一个下拉框,在其中显示h.name + ' (' + h.unit.to_s + ')'
我的问题是列表中可能有重复项,如果有,那么我只想要其中一个。
如何查询记录并返回整个记录(而不是在只返回一个字段的地方提取或选择),其中名称是唯一的?
类似于:
hospitals = order(:name).distinct

最佳答案

我不知道你怎么能用SQL来实现,但用method uniq of Array是可能的:

def self.get_hospitals
  hospitals = order(:name).all
  unique = hospitals.uniq(&:name)
  grouped = unique.group_by(&:state)
end

10-08 14:27