我有一个项目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