【发布时间】:2019-09-16 18:14:12
【问题描述】:
我之前有一个页面作为设置来更新 Rails 中的用户详细信息。那时密码更新没有任何问题。但是现在我为忘记密码的用户使用了密码重置选项。他们将收到一封邮件,然后他们重置密码。添加此功能后,帐户内部和通过邮件的更新都不会发生。
密码重置控制器:
def update
@user = User.find_by_password_reset_token!(params[:id])
if @user.password_reset_sent_at < 2.hour.ago
flash[:notice] = 'Password reset has expired'
redirect_to new_password_reset_path
elsif @user.update_attributes(params[:user])// this condition fails. I don't know why it fails.
flash[:notice] = 'Password has been reset!'
redirect_to new_session_path
else
redirect_to new_session_path
end
用户.rb
validates :password, presence: true, length: { minimum: 6 }
validates :password_confirmation, presence: true
before_save { |user| user.email = email.downcase }
before_save :create_remember_token
private
def create_remember_token
self.remember_token = SecureRandom.urlsafe_base64
end
def generate_token(column)
begin
self[column] = SecureRandom.urlsafe_base64
end while User.exists?(column => self[column])
end
我在用户控制器中使用的这些过滤器
before_filter :signed_in_user, only: [:edit, :update, :requestuser]
before_filter :correct_user, only: [:edit, :update]
before_filter :admin_user, only: :destroy
我是 Rails 和学习新手。需要帮忙。我在密码重置之前使用的相同过滤器我不知道它为什么会失败。它最初工作了几天,现在失败了。
【问题讨论】:
-
您的 cmets 在代码中显示“此条件失败”。请显示错误的堆栈跟踪。
-
您用
ruby-on-rails-3标记了您的问题。你真的在使用三年多前报废的 Rails 3.x 吗?
标签: ruby-on-rails ruby ruby-on-rails-3