Eliminación de asociaciones en Rails

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: :destroyEs 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.

Supongo que te gusta

Origin juejin.im/post/7087477261728743461
Recomendado
Clasificación