J'essaie de comprendre un problème que je continue à avoir dans la configuration des associations polymorphes dans mon application Rails 4.Rails 4 - Associations polymorphes avec une action de mise à jour sur les attributs polymorphes imbriqués
J'ai un modèle de projet et un modèle d'adresse. Les associations sont:
Profil
has_many :addresses, as: :addressable
accepts_nested_attributes_for :addresses, reject_if: :all_blank, allow_destroy: true
Adresse
belongs_to :addressable, :polymorphic => true
J'ai déjà posé cette question sur le même problème. Je ne pouvais pas (et ne peux toujours pas) comprendre les réponses dans ce post: Rails 4 - Polymorphic associations
Cette fois, j'ai un problème qui est déclenché lorsque j'essaie de mettre à jour un profil en insérant une adresse. Le message d'erreur identifie le problème comme provenant de l'action de mise à jour dans le contrôleur de profils. L'action de mise à jour a:
Mon profil une action de mise à jour du contrôleur a:
def update
# successful = @profile.update(profile_params)
# Rails.logger.info "xxxxxxxxxxxxx"
# Rails.logger.info successful.inspect
# [email protected]
# user.update.avatar
# Rails.logger.info "prof xxxxxxxxxxxxx"
# Rails.logger.info @profile.update(profile_params)
respond_to do |format|
if @profile.update(profile_params)
format.html { redirect_to @profile }
format.json { render :show, status: :ok, location: @profile }
else
format.html { render :edit }
format.json { render json: @profile.errors, status: :unprocessable_entity }
end
end
end
Le message d'erreur indique:
ERROR: duplicate key value violates unique constraint "index_addresses_on_addressable_type_and_addressable_id"
DETAIL: Key (addressable_type, addressable_id)=(Profile, 1) already exists.
Est-ce que quelqu'un sait ce que ce message signifie, et comment y remédier?
Ceci est une erreur PSQL, cela signifie qu'il existe déjà une entrée dans la base de données avec addresable_type comme « Profil » et addressable_id « 1 ». Cela signifie que vous créez une nouvelle adresse dans votre action de mise à jour. – nzajt
Savez-vous comment je pourrais en faire une mise à jour sur l'enregistrement existant? – Mel