gpt4 book ai didi

ruby-on-rails - rails 动态 find_by 方法在类方法中不起作用

转载 作者:行者123 更新时间:2023-12-04 03:44:33 25 4
gpt4 key购买 nike

我有一个用户模型,其中包含身份验证方法。

如果我在 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com