我想更改我的用户模型的配置文件属性,它只是 form_for 中的一个字符串。我遇到了一个问题,当我更新我的个人资料属性时,我的密码被设置为空白。
也就是说,我的用户帐户有密码,但是当我更改个人资料时,我的密码变为空白。下次我尝试登录时,我只是将密码字段留空。
如何在不更改密码的情况下更改我的个人资料字段?
谢谢。
这是我下面的表格和更新操作。我正在传递一个名为 updates_password 的隐藏字段,它是一个布尔值,用于指示是否需要密码验证和确认。
edit_profile.html.erb
<%= form_for @user, :html => { :multipart => true } do |f| %>
<%= f.label :profile %>
<%= f.text_area :profile%>
<%= f.hidden_field :updating_password, :value => "false" %>
<%= submit_tag "update" %>
<% end %>
users_controller.rb
def update
@user = User.find(params[:id])
@user.updating_password = params[:user][:updating_password]
#for updating profile only
if(@user.updating_password == 'false')
if @user.update_attribute('profile', params[:user][:profile])
redirect_to @user
else
@title = "Edit user"
render 'edit'
end
end
#for updating everything else including password
if(@user.updating_password == 'true')
if @user.update_attributes(params[:user])
redirect_to @user
else
@title = "Edit user"
render 'edit'
end
end
end
我将从我的 user.rb 文件中添加相关的 updates_password 片段:
validates_presence_of :password, :if => :should_validate_password?
validates_confirmation_of :password, :if => :should_validate_password?
def should_validate_password?
updating_password || new_record?
end