这可能看起来像一个愚蠢的问题,您只需说使用has_many :child_model, dependent: :destroy
是的,我们当然已经添加了。
但问题是我们已经拥有child_model
parent_model_id
的大量记录(约300万),但其中一些(~60k)记录parent_model_id
与ParentModel.exists?(parent_model_id)
返回false
我可以运行循环遍历child_model
中的所有记录并检查上述情况,但我想知道是否有办法从sql中获取记录,
可以从ChildModel.joins(:parent_model)
过滤ChildModel.all
然后给我们休息的东西。
由于
答案 0 :(得分:1)
如果您运行迁移,则不会循环记录(可能是调度程序?),而是运行SQL语句来删除这些记录。
execute "DELETE FROM child_model WHERE parent_model_id NOT IN (SELECT id FROM parent_model)"