问题描述
|
我正在尝试运行以下代码:
dupe_groups = Activity.all.group_by { |e| e.non_id_attributes }.select{ |gr| gr.last.size > 1 }
redundant_elements = dupe_groups.map { |group| group.last - [group.last.first] }.flatten
redundant_elements.each(&:destroy)
但是,出现以下错误:
Activity.find(:all).group_by { |e| e.non_id_attributes }.select{ |gr| gr.last.size > 1 }
NoMethodError: undefined method `last\' for #<Hash:0x00000107e505e8>
from (irb):10:in `block in irb_binding\'
from (irb):10:in `select\'
from (irb):10
from /usr/local/bin/irb:12:in `<main>\'
我怎样才能让这个家伙工作?
解决方法
当您执行group_by时,您会得到一个散列,将您分组的内容表示为散列中的键,因此,当您对其进行选择时,应该执行.select {| key,values | ...},然后您可以values.size> 1
虽然,当我看这段代码时,对我来说有一种味道。您实际上想做什么?