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
.