Ruby on rails Rails控制台-类型错误:can';t将哈希转换为字符串

Ruby on rails Rails控制台-类型错误:can';t将哈希转换为字符串,ruby-on-rails,angularjs,console,sqlite3-ruby,Ruby On Rails,Angularjs,Console,Sqlite3 Ruby,一点背景首先,我能得到- 我在sqlite3中更改了用户/密码,下面是我采取的步骤 rails c a = User.find(1) a.name = "myName" a.password_digest = "mySurName" a.save 太好了,成功了!不是 嗯,有点像,但Angular应用程序正在寻找类似这样的密码-$2a$10$TrTjNCWr5KlwW2h9aJr45u8MwLDo2ErEFQp1/ixc.8KW 在做了一些挖掘之后 然后,我尝试执行以下操作: a = User

一点背景首先,我能得到-

我在sqlite3中更改了用户/密码,下面是我采取的步骤

rails c
a = User.find(1)
a.name = "myName"
a.password_digest = "mySurName"
a.save
太好了,成功了!不是

嗯,有点像,但Angular应用程序正在寻找类似这样的密码-$2a$10$TrTjNCWr5KlwW2h9aJr45u8MwLDo2ErEFQp1/ixc.8KW

在做了一些挖掘之后

然后,我尝试执行以下操作:

a = User.find(1)
filters = Rails.application.config.filter_parameters
f = ActionDispatch::Http::ParameterFilter.new filters
b = f.filter :password_digest => 'mySurName'
a.password_digest = b
这将导致此post的主题行中出现错误-类型错误:无法将哈希转换为字符串,后面是(0.1ms)回滚事务和对.rb文件的大量引用行

所以,我的最终问题是,在使用rails控制台时,如何更新密码字段上有过滤器的记录


提前感谢

您应该仔细阅读密码哈希和存储,您的密码不应该以明文形式存储。凭直觉,试试这个:

a = User.find(1)
a.name = "whatever"
a.password = "something"
a.save

在Desive(可能还有其他)中,为用户模型定义了一个密码设置器,它会自动将密码散列存储在“密码摘要”列中。

好,同时阅读另一篇文章,内容有些不相关-下面是答案:

a = User.new(:name => "Luke", :password => "Skywalker", :password_confirmation => "Skywalker")
a.save
这就产生了这样的结果:

password_digest: "$2a$10$OPlc1rCZscqPkFYSp10NQeTmDRNs1iuv6D0VLAKk8sXu..."

这将只存储单词“something”-我找到了答案,我将发布你在答案中编写的代码与此代码的作用完全相同,只是你创建了一个新用户,而不是找到id=1oh的用户,只是我没有设置密码\u确认字段。