【问题标题】:How to Deduplicate a HABTM join table in Rails如何在 Rails 中对 HABTM 连接表进行重复数据删除
【发布时间】:2018-02-14 18:50:39
【问题描述】:

我有一个连接学生 HABTM 学生的连接表

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

如何对连接表进行重复数据删除。理想情况下,使用 Ruby。

【问题讨论】:

  • 您有连接表的模型还是使用默认的 Rails 的has_and_belongs_to_many 功能?

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


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    用于显示不重复的相关条目:

    has_and_belongs_to_many :students, -> { distinct }
    

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

    【讨论】:

    • 不,这是不对的,它们是只显示唯一项目的措施,而不是重复数据库,第二个防止重复,这是下一个任务,直到它完成重复数据删除。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-29
    • 1970-01-01
    • 2019-01-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多