提问人:mansoor.khan 提问时间:11/10/2023 最后编辑:mansoor.khan 更新时间:11/11/2023 访问量:80
Rails 控制台在从特定模型获取记录时出现生产时出现莫名其妙的错误
Rails console with inexplicable error on production on fetching a record from a specific model
问:
我在 Rails 控制台的生产中遇到了这个奇怪的问题:,其中尝试获取用户:会导致以下错误:rails c -e production
User.first
2.7.2 :005 > User.first
Traceback (most recent call last):
ArgumentError (wrong number of arguments (given 0, expected 1))
从这个错误中什么也看不出来。出于某种原因,它只发生在这个用户模型上,对于其余的模型,一切正常。
此外,在开发或生产模式下,此错误不会在本地出现。
此处附上用户模型,供参考:
# frozen_string_literal: true
class User < ApplicationRecord
devise :database_authenticatable,
:registerable,
:recoverable,
:rememberable,
:trackable,
:confirmable,
:omniauthable,
:validatable
....
end
任何解决此问题的指针将不胜感激。
更新
经过进一步的调查和 chatGPT 的一些帮助,我认为设计方法导致了错误。删除它后,一切正常。database_authenticable
现在我需要弄清楚为什么该方法会引发错误。
答:
3赞
mansoor.khan
11/11/2023
#1
好吧,所以问题是该模块有一个名为的方法,该方法接受参数并使用 bcrypt 对密码进行哈希处理。database_authenticable
password_digest
现在,我在数据库中有一个现有列,这是我之前使用的 ActiveRecords 所必需的。
因此,该方法在没有参数的情况下被调用,因此抛出错误: .password_digest
has_secure_password
ArgumentError (wrong number of arguments (given 0, expected 1))
我进行了迁移以删除该列,但显然它在某个时间点失败了,我不得不删除该列才能使事情正常工作。password_digest
我希望它能帮助任何面临类似问题的人。
评论
1赞
Vincent Rolea
11/13/2023
很高兴您能够解决这个问题!这是一个毛茸茸的!
0赞
mansoor.khan
11/15/2023
确实如此!如果没有社区的帮助,我将无法弄清楚。感谢所有参与其中的人。
评论