我正在尝试通过表单更新用户对象。但是,我不想允许更改用户名。我没有表格上的字段。当我提交表单时,它会给我一个错误,我不能将用户名确认留空。这是我的控制器:
def update
@partner = CommunityPartner.find(params[:id])
if @partner.update_attributes(allowed_update_params)
else
render('edit')
end
end
def allowed_create_params
params.require(:community_partner).permit(:name, :username, :display_email,
:username_confirmation,
:contact_method, :password,
:password_confirmation,
:phone_number, :address,
:description, :tags_string)
end
def allowed_update_params
params.permit!(:name) if params[:name]
params.permit!(:display_email) if params[:display_email]
params.permit!(:contact_method) if params[:contact_method]
params.permit!(:phone_number) if params[:phone_number]
params.permit!(:address) if params[:address]
params.permit!(:description) if params[:description]
params.permit!(:tags_string) if params[:tags_string]
end
如何更新我在更新操作中允许的参数而不触及其他参数?
编辑:验证方法
validates(:name, presence: { on: :create })
validates(:username, presence: { on: :create }, confirmation: { on: :create }, uniqueness: true)
validates(:contact_method, presence: { on: :create })
validates(:username_confirmation, presence: { on: :create })
validates(:display_email, format: { with: VALID_EMAIL })
validates(:address, presence: { on: :create })
validates(:phone_number, presence: { on: :create })
validates(:description, presence: { on: :create })
答案 0 :(得分:2)
假设您在username_confirmation
模型中对CommunityPartner
进行了验证。
对该验证使用on: :create
选项。因此,只有在CommunityPartner
记录创建和not while updating
(您不会通过username_confirmation
)时才会检查该验证。
例如:
class CommunityPartner < ActiveRecord::Base
validates :username_confirmation, presence: true, on: :create
end
答案 1 :(得分:0)
您可以使用update_all
帮助程序而不是update_attributes
跳过验证。