我試圖找出一個問題,我似乎在設置我的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