我在Heroku上运行rails应用程序并在用户尝试重置密码时遇到问题。我的用户模型有validates_uniqueness_of :email
,重置密码的方法是
def send_password_reset
generate_token(:password_reset_token)
self.password_reset_sent_at = Time.zone.now
save!
UserMailer.password_reset(self).deliver
end
当我检查heroku logs
时,它告诉我save!
正在生成ActiveRecord::RecordInvalid (Validation failed: Email has already been taken)
,但我不会创建新用户,甚至不会编辑当前用户的电子邮件字段。
当我在本地运行时,一切正常,没有错误。
答案 0 :(得分:0)
检查数据库中是否有多个用户使用相同的电子邮件。
在添加验证之前,可能会创建副本。
答案 1 :(得分:0)
查看您的Db,使用heroku run console
连接到您应用程序的控制台,查看User.all
的输出,看看它是否存在。它不会成为你在Heroku上运行这个导致这个错误的事实。