我一直在关注Devise github页面上的教程:https://github.com/plataformatec/devise/wiki/How-To:-Allow-users-to-sign_in-using-their-username-or-email-address
我在教程的第二部分,我们允许用户使用他们的用户名或电子邮件恢复他们的密码,并且教程说要复制到用户模型中有大量代码。这是抛出错误的行:
def self.find_record(login)
where(attributes).where(["username = :value OR email = :value", { :value => login }]).first
end
这是我得到的错误:
NameError (undefined local variable or method `attributes' for #<Class:0xa70e1a8>):
app/models/user.rb:63:in `find_record'
app/models/user.rb:44:in `find_recoverable_or_initialize_with_errors'
app/models/user.rb:30:in `send_reset_password_instructions'
有人知道为什么会出现这个错误吗?
答案 0 :(得分:1)
您没有传递任何属性,并且没有“属性”类方法,因此where(attributes)
不起作用。它看起来不像你需要。将您的方法更改为:
def self.find_record(login)
where(["username = :value OR email = :value", { :value => login }]).first
end
对于它的价值,我不知道它在教程中是如何工作的。