问题描述
Class User < ActiveRecord::Base
has_many :posts,dependent: :destroy
end
Class Post < ActiveRecord::Base
belongs_to :user
end
销毁具有N个帖子的用户时,将运行N + 1个查询以销毁关联的帖子和用户。在这种情况下如何避免急切加载?
解决方法
您可以使用
dependent: delete_all
这将创建一个SQL查询以删除关联的记录,但是不会调用任何before_destroy
after_destroy
回调,因为不会调用任何destroy
方法。
如果您使用的是Postgres,则需要在外键上的原始迁移中传递级联标志,以使其起作用
add_foreign_key :some_table,:related_table,on_delete: cascade