Lors de l'utilisation du nouveau accepts_nested_attributes_for
dans ActiveRecord, il est possible d'utiliser l'option :allow_destroy => true
. Lorsque cette option est définie, tout hachage contenant des attributs imbriqués comme {"_delete"=>"1", "id"=>"..."}
transmis à update_attributes
va supprimer l'objet imbriqué.Suppression de l'assosiation au lieu de la destruction de l'objet lorsque: allow_destroy => true
Installation simple:
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"}})
Question: Comment puis-je - au lieu de supprimer les objets imbriqués lorsque "_delete" => "1"
- simplement supprimer l'association? (Dans le cas ci-dessus, définissez le forum_id sur l'utilisateur à zéro)
Question supplémentaire: Que faire si je souhaite également modifier l'attribut d'un objet imbriqué lors de la suppression de l'association? (Par exemple comme la création d'un état ou d'un horodatage)