更新嵌套模型的属性

时间:2014-06-09 16:37:18

标签: ruby-on-rails nested-attributes

我有一个嵌套模型,其中一个"供应商"包含来自"用户"的字段。模型。

**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

我该如何解决这个问题?具体来说,我需要进行哪些修改才能使应用程序仅更新我在表单上指定的字段?

1 个答案:

答案 0 :(得分:0)

看起来您可以修改模型:

accepts_nested_attributes_for :user, allow_destroy: true, update_only: true

添加update_only:true可防止它创建用户的新实例