【发布时间】:2018-02-14 18:50:39
【问题描述】:
我有一个连接学生 HABTM 学生的连接表
不幸的是,它里面有一些重复的记录。
如何对连接表进行重复数据删除。理想情况下,使用 Ruby。
【问题讨论】:
-
您有连接表的模型还是使用默认的 Rails 的
has_and_belongs_to_many功能?
标签: ruby-on-rails ruby activerecord has-and-belongs-to-many
我有一个连接学生 HABTM 学生的连接表
不幸的是,它里面有一些重复的记录。
如何对连接表进行重复数据删除。理想情况下,使用 Ruby。
【问题讨论】:
has_and_belongs_to_many 功能?
标签: ruby-on-rails ruby activerecord has-and-belongs-to-many
您可以使用以下查询从 HABTM 表中删除重复记录。
ActiveRecord::Base.connection.execute("DELETE FROM TableName WHERE (model_id_one, model_id_two) IN (SELECT model_id_one model_id_two FROM TableName GROUP BY model_id_one, model_id_two HAVING COUNT(*) > 1)")
【讨论】:
我认为这会有所帮助:has_and_belongs_to_many, avoiding dupes in the join table
用于显示不重复的相关条目:
has_and_belongs_to_many :students, -> { distinct }
但我也建议在您的连接表上添加唯一索引。
【讨论】: