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