Mysql 如何使用带有哈希密码(bcrypt)的JSON文件为数据库种子?

Mysql 如何使用带有哈希密码(bcrypt)的JSON文件为数据库种子?,mysql,ruby-on-rails,json,bcrypt,Mysql,Ruby On Rails,Json,Bcrypt,在我的种子文件中,我创建了它,以便种子文件将为其中的模型Adminuser生成数据。该模型具有“password_digest”列,该列存储散列密码(使用bcrypt)。我从一个JSON文件获取表的数据,我在seed文件上解析该文件,使其在我的mySQL数据库上成为seed。问题是,密码设置不正确,我遇到以下错误: ActiveRecord::RecordInvalid:验证失败:密码不能为空,密码太短(至少6个字符) 种子.rb adminuser = JSON.parse(File.read

在我的种子文件中,我创建了它,以便种子文件将为其中的模型Adminuser生成数据。该模型具有“password_digest”列,该列存储散列密码(使用bcrypt)。我从一个JSON文件获取表的数据,我在seed文件上解析该文件,使其在我的mySQL数据库上成为seed。问题是,密码设置不正确,我遇到以下错误:

ActiveRecord::RecordInvalid:验证失败:密码不能为空,密码太短(至少6个字符)

种子.rb

adminuser = JSON.parse(File.read(Rails.root.join("export-admin_user.json")))
adminuser.each do |admin|
  Adminuser.create!(admin)
end
export-admin_user.json

[
    {
    "id":6,
    "username":"admin",
    "password_digest":"$2a$10$Z0tK32wRaoO4SmWl4D8vKObpaUgobb.WwS2T3mr64eZdK48/oybRm",
    "email":"sample_email1@gmail.com",
    "first_name":"admin",
    "last_name":"admin",
    "email_confirmed":true,
    "confirm_token":null,
    "created_at":"2018-03-13T02:14:34.000Z",
    "updated_at":"2018-03-13T02:14:34.000Z",
    "admin_type":"admin"
    },

    {"id":7,
    "username":"registrar",
    "password_digest":"$2a$10$hX4IlT.mn1W8fwLQ7t4JYOEz0xwuK7W1Kp655Q3doQfd08c8/ZoKm",
    "email":"sample_email2@gmail.com",
    "first_name":"registrar",
    "last_name":"registrar",
    "email_confirmed":true,
    "confirm_token":"9WhkWPT5Hhuhkimwb-F_hQ",
    "created_at":"2018-04-03T02:31:49.000Z",
    "updated_at":"2018-04-03T02:31:49.000Z",
    "admin_type":"registrar"
    }
]

我不明白为什么会发生这种错误。通过使用.sql文件导入表的数据是可行的,那么为什么这种播种数据的方式不起作用呢?

根据Sajin给出的评论,我所需要做的就是在创建记录时跳过验证

当我替换时,种子起作用了:

Adminuser.create!(admin)
与:


您可以跳过验证来尝试同样的方法吗。它对我的设计身份验证有效。我尝试过在创建方法“Adminuser.create”的末尾添加“.save(validate:false)”来实现这一点!保存(验证:false)”,但它不起作用。我相当肯定这个错误与语法有关。我目前也在尝试使用下面的解决方案来解决这个问题:Try
Adminuser.new(admin).save!(验证:false)
Adminuser.new(admin).save!(validate: false)