【发布时间】: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