Допустим, у меня есть User
и пользователь has_many :tags
, и я хотел бы удалить все теги @users
, которые дублировали name
. Например,
@user.tags #=> [<Tag name: 'A'>, <Tag name: 'A'>, <Tag name: 'B'>]
Я бы хотел сохранить только теги с уникальными именами и удалить остальные из базы данных.
Я знаю, что мог бы вытащить список имен уникальных тегов из тегов пользователя, удалить все теги пользователей и заново создать теги пользователей только с уникальными именами, но это было бы неэффективно?
С другой стороны, select
не будет работать, поскольку возвращает только выбранный столбец. uniq
также не будет работать:
@user.tags.uniq #=> returns all tags
Есть ли более эффективный способ?
UPDATE:
Я хотел бы сделать это во время миграции.