through rails many has_one has_many has_and_belongs_to_many has example belongs and ruby-on-rails ruby-on-rails-3 has-and-belongs-to-many

ruby on rails - rails - carriles 3 habtm borrar solo asociación



rails has_one through (3)

class Company has_and_belongs_to_many :users end class User has_and_belongs_to_many :companies end

Cuando borro una compañía, ¿cuál es la mejor manera (recomendada) de eliminar SOLO las asociaciones de los usuarios de esa compañía? (Me refiero no a los usuarios reales, solo a las asociaciones)


Prefiero lo siguiente ya que mantiene la lógica del modelo en el modelo. No entiendo por qué ActiveRecord no solo lo hace. De todos modos, en ambos modelos unidos, agrego la siguiente devolución de llamada.

before_destroy {|object| object.collection.clear}

Así que en tu ejemplo:

class Company has_and_belongs_to_many :users before_destroy {|company| company.users.clear} end class User has_and_belongs_to_many :companies before_destroy {|user| user.companies.clear} end

En muchas discusiones sobre cómo hacer una eliminación en cascada en una asociación de recopilación, muchas personas declaran muerta a la asociación HABTM y recomiendan has_many: through. Estoy en desacuerdo. Usa lo que tenga sentido. Si la asociación no tiene atributos intrínsecos, use HABTM.


Si llama a destroy en lugar de delete, las asociaciones se eliminarán automáticamente.