更新密码API rails

时间:2016-01-05 15:54:53

标签: ruby-on-rails api

我正在尝试检查phn编号是否以0开头,将06替换为0,它可以在控制台上运行,也可以在密码创建,但是在更新密码中,如下所示,它不会产生任何影响。我不明白为什么。

  def update
# if @current_user.phone_num.start_with?('0') and !@current_user.phone_num.start_with?('00')
if @current_user.update_attributes(user_params)
  if @current_user.phone_num.start_with?('0')
    @current_user.phone_num =  @current_user.phone_num.sub!("0", "60")
  end
  if user_params[:avatar_uploader].present?
    @current_user.update(avatar: @current_user.avatar_uploader.url)
  end
  json_success('Successfully updated profile')
else
  json_bad_request("There were errors updating profile, #{@current_user.errors.full_messages.to_sentence}", {errors: @current_user.errors.full_messages})
end

这是更新密码的api。我希望有人能提供帮助!感谢

2 个答案:

答案 0 :(得分:1)

修改后你永远不会保存它。

不相关,但如果您不需要修改,请不要使用sub!;使用sub。在这种情况下,它不应该是重要的,因为你只需要进行替换,但如果没有替换,sub!会返回nil - 这可能会导致意外情况,如果你&#39 ;期待回来的字符串。

答案 1 :(得分:0)

替换后你没有保存手机号码。更好地了解它是否成功保存。从这行代码开始:

    @current_user.phone_num =  @current_user.phone_num.sub!("0", "60")
    if @current_user.phone_num.save
      json_success('Successfully updated profile')
    else
      json_bad_request("There were errors updating profile, #{@current_user.errors.full_messages.to_sentence}", {errors: @current_user.errors.full_messages})
    end

同意Dave,所有逻辑都不属于控制器。