2 Stimmen

Assoziationen entfernen, statt Objekt zu zerstören, wenn :allow_destroy => true

Bei Verwendung des neuen accepts_nested_attributes_for in ActiveRecord ist es möglich, die Option :allow_destroy => true . Wenn diese Option gesetzt ist, wird jeder Hash, der verschachtelte Attribute wie {"_delete"=>"1", "id"=>"..."} übergeben an update_attributes wird das verschachtelte Objekt gelöscht.

Einfache Einrichtung:

class Forum < ActiveRecord::Base
  has_many :users
  accepts_nested_attributes_for :users, :allow_destroy => true
end

class User < ActiveRecord::Base
  belongs_to :forum
end

Forum.first.update_attributes("users_attributes"=>{"0"=>{"_delete"=>"1", "id"=>"42"}})

Frage: Wie kann ich - anstatt die verschachtelten Objekte zu löschen, wenn "_delete" => "1" - einfach die Assoziation entfernen? (d.h. im obigen Fall setzen Sie die forum_id des Benutzers auf null)

Bonusfrage: Was ist, wenn ich beim Entfernen der Assoziation auch das Attribut an auf dem verschachtelten Objekt ändern möchte? (z. B. das Setzen eines Status oder eines Zeitstempels)

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X