Ruby on rails - 如何编写删除重复项目的迁移



我有以下输出:

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

如何删除所有重复项并只留下一个用户2项目。

目标

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

编辑

我想,我首先误解了你的问题。您只需要每个用户一个项目 - 对吗?

我假设,您在用户模型中定义,用户有很多项目,那么以下内容应该有效:

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

相关内容

  • 没有找到相关文章

最新更新