1

私は次の出力を持っています:

> group.items
=> [<Item id: 1, user_id: 7, group_id: 1>,<Item id: 2, user_id: 7, group_id: 1>,
    <Item id: 1, user_id: 2, group_id: 1>,<Item id: 2, user_id: 2, group_id: 1>,<Item id: 3, user_id: 2, group_id: 1>,
    <Item id: 4, user_id: 5, group_id: 1>]

すべての重複を削除し、user2アイテムを1つだけ残す方法。

ゴール

> group.items
=> [<Item id: 1, user_id: 7, group_id: 1>,
    <Item id: 1, user_id: 2, group_id: 1>,
    <Item id: 4, user_id: 5, group_id: 1>]
4

1 に答える 1

0

編集

私は最初にあなたの質問を誤解したと思います。ユーザーごとに1つのアイテムだけが必要です-そうですか?

ユーザーモデルでユーザーが多くのアイテムを持っていると定義したとすると、次のように機能するはずです。

old_items = group.items
group.items.delete_all
old_items.users.each do |user|
  group << user.items.first
end
group.save

それ以外の場合、一意のリストが必要な場合は、次の方法で十分です。

group.items = group.items.uniq
于 2013-01-24T20:47:49.930 に答える