Escenas
Al eliminar un registro, necesita eliminar un cierto tipo de registro asociado a él, por ejemplo:
class Category < ApplicationRecord
has_many :blogs
end
复制代码
Al eliminar una categoría, todos los blogs asociados con ella deben eliminarse.
solución
ortografía uno
class Category < ApplicationRecord
has_many :blogs, dependent: :destroy
# or
# has_many :blogs, dependent: :delete_all
end
复制代码
defecto
dependent: :destroy
Es una operación n + 1. Cuando se necesita eliminar una categoría, todos los blogs que pertenecen a esta categoría se encontrarán y luego se eliminarán, lo que tiene riesgos de rendimiento. En este punto puede utilizar eldelete_all
ortografía dos
class Category < ApplicationRecord
def before_destroy
self.blogs.destroy_all # 此处n+1,可使用delete_all
end
end
复制代码
Si hay errores, por favor indíquelos.