ruby-on-rails - references - rails has_one through
La relación habtm no soporta: opción dependiente (3)
¿Es cierto que las relaciones HABTM no son compatibles con la opción :dependent ?
class Person < ActiveRecord::Base
has_and_belongs_to_many :posts, :dependent => :destroy
end
Estoy probando rieles de borde.
Prueba esto:
class Person < ActiveRecord::Base
has_and_belongs_to_many :posts
before_destroy do
posts.each { |post| post.destroy }
end
end
No es necesario publicar.claro ya que Rails 4.2+ ya maneja esto.
Sí, no lo soporta. Ver los documentos . En general, habtm está pensado solo para casos muy simples y si empiezas a necesitar cosas más complejas, deberías cambiar a has_many :through .
Si desea mantener la simple asociación has_and_belongs_to_many , puede agregar esto:
class Person < ActiveRecord::Base
has_and_belongs_to_many :posts
before_destroy { posts.clear }
end
Lo que borrará la tabla de unión de todas las entradas de esa person . Nota: Esto solo elimina los registros de la tabla de unión, no destruye las posts (lo cual tiene sentido si es una bi-dirección has_and_belongs_to_many porque otras persons pueden hacer referencia a la post ).
Pero adivinando a partir de sus nombres ( Person y Post ) Supongo que probablemente pueda salirse con una Person has_many :posts y una Post belongs_to :person en cuyo caso puede usar :dependent => :destroy en la asociación has_many .