我有一个嵌套模型,其中一个"供应商"包含来自"用户"的字段。模型。
**Vendor.rb**
has_one :user, as: :profile, dependent: :destroy
accepts_nested_attributes_for :user, allow_destroy: true
**User.rb**
belongs_to :profile, polymorphic: true
地址和密码字段位于用户模型中。当我尝试在未明确指定密码的情况下更新供应商模型时,密码摘要字段将设置为nil。地址字段和用户模型中的所有其他字段也是如此。
这是控制器:
def update
@vendor = Vendor.friendly.find(params[:id])
if @vendor.update_attributes(vendor_params)
flash[:success] = "Profile updated"
redirect_to(@vendor)
else
render 'edit'
end
end
def vendor_params
params.require(:vendor).permit(:company, :website,
:user_attributes => [:phone_number, :email, :email_confirmation, :password, :password_confirmation, :address,
:street_num, :street, :city, :state, :zip, :country, :latitude, :longitude, :password_flag])
end
我该如何解决这个问题?具体来说,我需要进行哪些修改才能使应用程序仅更新我在表单上指定的字段?
答案 0 :(得分:0)
看起来您可以修改模型:
accepts_nested_attributes_for :user, allow_destroy: true, update_only: true
添加update_only:true可防止它创建用户的新实例