【发布时间】:2020-03-25 17:45:10
【问题描述】:
这是设置我的变量并创建哈希然后我尝试从 json 对象创建用户并硬编码密码,但我返回了一个错误。我得到一个 TypeError:没有将 Hash 隐式转换为 Integer 我不太清楚为什么 jsonfile 不包含密码,我必须为每个用户硬编码一个
require 'json'
encrypted_password = '#$taawktljasktlw4aaglj'
file = File.read('db/people.json')
data_hash = JSON.parse(file)
records = JSON.parse(File.read('db/people.json'))
records.each do |record|
records['encrypted_password' => encrypted_password]
user = User.create!(record.except('logins'))
user.logins.create(record['logins'])
end
【问题讨论】:
-
records['encrypted_password' => encrypted_password]我不确定它的语法是否正确 :) -
我很确定应该是这样的:
record['encrypted_password'] = encrypted_password -
如果我这样做,我会收到此活动记录错误,ActiveRecord::RecordInvalid: Validation failed: Password can't be blank 我试图为数据库中创建的每个用户设置此密码
-
你不会通常说
record['password'] = 'unencrypted password'然后让User处理生成加密版本吗?另请注意,您希望在迭代中使用record(而不是records)。或者更好User.create!(record.except('logins').merge('password' => 'unencrypted password')). -
如果要使用 - 你永远不应该使用默认密码。决定他们是否需要一个并遵循 Rails 方式,或者像其他人一样使用 Devise gem 来处理这方面的问题。如果您是为了好玩而从头开始构建自己的,请查看 Michael Hartl 的 rails 教程以获得比您正在做的更好的选择。
标签: ruby ruby-on-rails-5