尝试在生产中运行Rails应用程序时,我从Passenger收到以下错误:
self = SecureRandom.urlsafe_base64
来自我的user.rb
模型。有关为何发生这种情况的任何想法?完整的模块如下:
def generate_token(column)
begin
self = SecureRandom.urlsafe_base64
end while User.exists?(column => self[column])
end
它的目的是在用户请求重置密码时设置安全令牌,该令牌来自以下内容:
def send_password_reset #From 274
generate_token(:password_reset_token)
self.password_reset_sent_at = Time.zone.now
save!
UserMailer.password_reset(self).deliver
end
有什么想法吗?我看不到任何语法错误。
答案 0 :(得分:0)
在Ruby中,self
使您可以访问当前对象,无法设置。在这种情况下,self
引用User
模型的当前实例。看起来你只想设置password_reset_token列,所以:
def generate_token(column_name)
write_attribute column_name, SecureRandom.urlsafe_base64
end