如何在Rails中重复数据删除HABTM连接表

时间:2018-02-14 18:50:39

标签: ruby-on-rails ruby activerecord has-and-belongs-to-many

我有一个加入学生HABTM学生的联接表

不幸的是,它中有一些重复的记录。

如何重复删除连接表。理想情况下,使用Ruby。

2 个答案:

答案 0 :(得分:0)

您可以使用以下查询从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)" )

答案 1 :(得分:0)

我认为这会有所帮助:has_and_belongs_to_many, avoiding dupes in the join table

显示没有重复的相关条目:

has_and_belongs_to_many :students, -> { distinct }

但我也建议在你的联接表上添加唯一索引。