ROR设计:允许用户名或电子邮件登录:未定义的本地变量

时间:2011-02-20 19:53:16

标签: ruby ruby-on-rails-3 activerecord devise

我一直在关注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'

有人知道为什么会出现这个错误吗?

1 个答案:

答案 0 :(得分:1)

您没有传递任何属性,并且没有“属性”类方法,因此where(attributes)不起作用。它看起来不像你需要。将您的方法更改为:

def self.find_record(login)
  where(["username = :value OR email = :value", { :value => login }]).first
end

对于它的价值,我不知道它在教程中是如何工作的。