Использование group_by для поиска записей дуэта - PullRequest
0 голосов
/ 25 мая 2011

Я пытаюсь запустить следующий код:

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>'

Как мне заставить этого парня работать?

1 Ответ

1 голос
/ 25 мая 2011

Когда вы делаете group_by, вы получаете хеш, то, что вы группируете, представляется в виде ключей в хэше, поэтому, когда вы выбираете его, вы должны делать .select {| key, values ​​|...} и вы можете затем values.size> 1

Хотя, когда я смотрю на этот код, он пахнет мной.Что вы на самом деле пытаетесь сделать?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...