Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/55.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 无法按唯一属性对记录进行排序_Ruby On Rails_Ruby - Fatal编程技术网

Ruby on rails 无法按唯一属性对记录进行排序

Ruby on rails 无法按唯一属性对记录进行排序,ruby-on-rails,ruby,Ruby On Rails,Ruby,使用以下代码,我只需要返回'point'属性唯一的记录。我似乎无法独自到达那里 uniques = Item.find_all_by_item_id(item_id) uniques.sort! {|a, b| b.point <=> a.point } # how do I reject the equal points? uniques=项目。按项目id(项目id)查找所有项目 别克斯!{| a,b | b.point a.point}我如何拒绝相等的点? 换句话说。。我想,

使用以下代码,我只需要返回'point'属性唯一的记录。我似乎无法独自到达那里

uniques = Item.find_all_by_item_id(item_id)
uniques.sort! {|a, b| b.point <=> a.point } # how do I reject the equal points?
uniques=项目。按项目id(项目id)查找所有项目
别克斯!{| a,b | b.point a.point}我如何拒绝相等的点?
换句话说。。我想,你是如何使[0,1,1,1,2,3,3,4,4,7]#=>[0,2,7]?这个怎么样:

# Get the number of items with each point value
counts = Item.count("point", :group => "point")

# Get the IDs of all entries that only show up once
unique_ids = counts.collect { |count| count[0] if count[1] == 1 }.compact

unique_items = Item.find_all_by_id(unique_ids)

我可以想尽办法做到这一点:

uniques.reject!{|u| uniques.select{|x| x == u}.size > 1}
基本上遍历uniques数组,然后查看数组中是否有多个这样的项。显然,有很多聪明的方法可以加快速度,但对于小型阵列来说,这应该是可行的


基本上计算每个项目在散列中出现的次数,如果有多个项目拒绝它,那么只需查看键即可。

我认为按id查找所有项目是您想要的。。。至少在我自己的Rails应用程序中是这样的。我正在查看我的一个整数字段。按点查找所有适用于我。by_id似乎只返回[]请随时用最终代码更新我的答案或注释,以便我可以更新它。
h = Hash.new(0)
uniques.each{|u| h[u] += 1}
h.reject{|k,v| v > 1}.keys