Ruby on rails RubyonRails:获取列的所有唯一值的最佳方法是什么?
我要做的是获取已分配给特定模型属性的所有唯一值。有没有一种规范的方法,或者说是最好的方法?此外,如果该技术不是特定于数据库的,则会很有帮助。使用Ruby on rails RubyonRails:获取列的所有唯一值的最佳方法是什么?,ruby-on-rails,ruby,activerecord,Ruby On Rails,Ruby,Activerecord,我要做的是获取已分配给特定模型属性的所有唯一值。有没有一种规范的方法,或者说是最好的方法?此外,如果该技术不是特定于数据库的,则会很有帮助。使用 ModelName.distinct.pluck(:attribute) 在哪里 用您的型号名称替换ModelName 和带有列名的属性 例如: 在Post模型中,如果要列出所有唯一的标题 Post.distinct.pluck(:title) 在Rails4中添加了distinct,用于Rails3以下用途: Post.uniq.pluck(:t
ModelName.distinct.pluck(:attribute)
在哪里
用您的型号名称替换ModelName
和带有列名的属性
例如:
在Post
模型中,如果要列出所有唯一的标题
Post.distinct.pluck(:title)
在Rails4
中添加了distinct,用于Rails3
以下用途:
Post.uniq.pluck(:title)
使用ActiveRecord(精细)
使用ActiveRecord(更快)
使用(不推荐用于大型收藏)
返回
#<ActiveRecord::Relation [#<Vendor id: nil, event_id: 6>, #<Vendor id: nil, event_id: 2>, #<Vendor id: nil, event_id: 1>, #<Vendor id: nil, event_id: 3>, #<Vendor id: nil, event_id: 10>, #<Vendor id: nil, event_id: 5>, #<Vendor id: nil, event_id: 7>]>
=> [2, 3, 1, 5, 10, 7, 6]
=> [6, 2, 1, 3, 10, 5, 7]
返回
#<ActiveRecord::Relation [#<Vendor id: nil, event_id: 6>, #<Vendor id: nil, event_id: 2>, #<Vendor id: nil, event_id: 1>, #<Vendor id: nil, event_id: 3>, #<Vendor id: nil, event_id: 10>, #<Vendor id: nil, event_id: 5>, #<Vendor id: nil, event_id: 7>]>
=> [2, 3, 1, 5, 10, 7, 6]
=> [6, 2, 1, 3, 10, 5, 7]
或
返回
#<ActiveRecord::Relation [#<Vendor id: nil, event_id: 6>, #<Vendor id: nil, event_id: 2>, #<Vendor id: nil, event_id: 1>, #<Vendor id: nil, event_id: 3>, #<Vendor id: nil, event_id: 10>, #<Vendor id: nil, event_id: 5>, #<Vendor id: nil, event_id: 7>]>
=> [2, 3, 1, 5, 10, 7, 6]
=> [6, 2, 1, 3, 10, 5, 7]
我得到了#Vendor.select(:event_id)的未定义方法'distinct'。uniq.pull(:event_id)正是我想要的。非常感谢。