从 Rails 7.1.4 升级到 7.2.1 的用户无法再登录。奇怪的是,这似乎只影响开发模式。该问题似乎是在会话控制器调用时引起的:
resource = warden.authenticate!(auth_options)
...它将调用 User.rb 中的以下方法之一:
# Implement the requirement to supply username or email to login.
def self.find_for_database_authentication(warden_conditions)
conditions = warden_conditions.dup
login = conditions[:login]
where(['lower(username) = :value OR lower(email) = :value', { value: login.downcase.strip }]).first if login
end
# Authenticate user by means of a JSON Web token.
def self.find_for_jwt_authentication(warden_conditions)
conditions = warden_conditions.dup
where('id = ?', conditions.to_i).first
end
我分别收到以下错误:
NoMethodError (undefined method `name' for "knirirr":String):
NoMethodError (undefined method `name' for "123":Integer):
我一直在研究设计和守望者宝石的代码,但没有发现任何东西。 config/environments/development.rb 中也没有任何明显的内容,我无法使用新创建的 Rails 应用程序重现此内容。
任何人都可以建议这背后可能是什么,或者去哪里寻找?
这是使用:
升级到最新版本(7.2.2 IIRC)后此问题消失;大概是在其中一颗也已升级的宝石中。