Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/98.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails RubyonRails:获取列的所有唯一值的最佳方法是什么?_Ruby On Rails_Ruby_Activerecord - Fatal编程技术网

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)正是我想要的。非常感谢。