我正在尝试检查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。我希望有人能提供帮助!感谢
答案 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,所有逻辑都不属于控制器。