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

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 .