【问题标题】:How to seed database using JSON file with hashed password (bcrypt)?如何使用带有散列密码(bcrypt)的 JSON 文件为数据库播种?
【发布时间】:2018-05-09 02:57:36
【问题描述】:

在我的种子文件中,我做了它,以便种子文件将为其中的模型生成数据,Adminuser。该模型具有“password_digest”列,用于存储散列密码(使用 bcrypt)。我从一个 JSON 文件中获取表的数据,我在种子文件上对其进行解析以使其在我的 mySQL 数据库中成为种子。问题是,密码没有正确播种,我收到此错误:

“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 文件导入表的数据是可行的,那么为什么这种播种数据的方式不起作用呢?

【问题讨论】:

  • 您能否通过跳过验证来尝试相同的操作。它适用于我的设计身份验证。
  • 我已经尝试通过在创建方法 ""Adminuser.create!(admin).save(validate: false)"" 的末尾添加 ".save(validate: false)" 来做到这一点,但它不起作用。我相当确定该错误与语法有关。我目前也在尝试使用此处的解决方案来解决此问题:stackoverflow.com/questions/27931101/…
  • 试试Adminuser.new(admin).save!(validate: false)

标签: mysql ruby-on-rails json bcrypt


【解决方案1】:

根据 Sajin 的评论,事实证明我需要做的就是在创建记录时跳过验证。

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

Adminuser.create!(admin)

与:

Adminuser.new(admin).save!(validate: false)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-09
    • 2020-06-28
    • 1970-01-01
    • 2021-06-04
    • 2019-07-17
    • 1970-01-01
    相关资源
    最近更新 更多