Я пытаюсь понять проблему, которую я, похоже, не имею при настройке полиморфных ассоциаций в моем приложении Rails 4.Rails 4 - Полиморфные ассоциации с действием обновления на вложенные полиморфные атрибуты
У меня есть модель проекта и модель адреса. Ассоциации являются:
Профиль
has_many :addresses, as: :addressable
accepts_nested_attributes_for :addresses, reject_if: :all_blank, allow_destroy: true
Адрес
belongs_to :addressable, :polymorphic => true
Я уже задавал этот вопрос на одной и той же проблемы. Я не мог (и до сих пор не могу) понять ответы в этой должности: Rails 4 - Polymorphic associations
На этот раз - У меня возникла проблема, которая срабатывает, когда я пытаюсь обновить профиль, вставив адрес. Сообщение об ошибке идентифицирует проблему как результат действия обновления в контроллере профилей. Действие обновление имеет:
Мой профиль действия контроллера обновление имеет:
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
сообщение об ошибке говорит:
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.
Кто-нибудь знает, что означает это сообщение, и как решить ее?
Это ошибка PSQL, это означает, что уже существует запись в базе данных с addresable_type как «Профиль» и addressable_id как «1». Таким образом, это означает, что вы создаете новый Addressable в своем действии обновления. – nzajt
Знаете ли вы, как я мог сделать это в обновлении существующей записи? – Mel