无法改变自我的价值

时间:2014-08-18 22:51:22

标签: ruby-on-rails

尝试在生产中运行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

有什么想法吗?我看不到任何语法错误。

1 个答案:

答案 0 :(得分:0)

在Ruby中,self使您可以访问当前对象,无法设置。在这种情况下,self引用User模型的当前实例。看起来你只想设置password_reset_token列,所以:

def generate_token(column_name)
  write_attribute column_name, SecureRandom.urlsafe_base64
end