我有一个用户模型,其中包含身份验证方法。
如果我在 Rails 控制台中使用模型进行测试,可以很好地创建用户,然后我可以在电子邮件中进行查找并像这样完美地返回用户。
user = User.find_by_email("someaddress@email.com")
现在,如果我尝试像这样调用身份验证方法并返回用户,我的身份验证方法中的 puts user 语句将返回 nil
user = User.authenticate("someaddress@email.com", "foobar")
模型看起来像这样
class User < ActiveRecord::Base
attr_accessor :password
attr_accessible :first_name, :last_name,
:email, :birth_date, :sex,
:password, :password_confirmation
def self.authenticate(email, submitted_password)
user = find_by_email(email)
puts user #this returns nil so my class is never able to authenticate the user
return nil if user.nil?
return user if user.has_password?(submitted_password)
end
end
我不知道问题是什么。一些对此问题有所了解的人将不胜感激。
最佳答案
您在 Class 方法中使用 find_by 方法的方式很好;应该可以。
您确定 nil 输出来自 puts 吗? nil 可能是您方法的输出。 user.has_password?
可能有错误。
代替puts
,试试:
p user
...只是为了确定。
关于ruby-on-rails - rails 动态 find_by 方法在类方法中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4299603/