ActiveRecord :: RecordInvalid: проверка не удалась: пользователи должны существовать - PullRequest
1 голос
/ 30 марта 2020

Я пытаюсь заполнить базу данных sqlite3 из файла json как проект. У меня есть две модели пользователя и логины.

 require 'json'
 records = JSON.parse(File.read('db/people.json'))

 records.each do |record| 
   User.create!(record.except('logins').merge('password' => 'encrypted password'))
 end

records.each do |record|
  Login.create!(record['logins'])
end

Когда я запускаю мой rails db: seed, он успешно отбирает пользователей, а затем завершает работу при создании логинов с этой ошибкой ActiveRecord :: RecordInvalid: Ошибка проверки: пользователи должны существовать Это может быть что-то с моей схемой или моим исходным скриптом, я не уверен, какой

    ActiveRecord::Schema.define(version: 2020_03_30_164743) do

   create_table "logins", force: :cascade do |t|
    t.datetime "date"
    t.datetime "created_at", null: false
    t.datetime "updated_at", null: false
    t.integer "user_id"
    t.index ["user_id"], name: "index_logins_on_user_id"
   end

   create_table "users", force: :cascade do |t|
    t.string "first_name"
    t.string "last_name"
    t.string "city"
    t.string "state"
    t.string "email", default: "", null: false
    t.string "encrypted_password", default: "", null: false
    t.string "reset_password_token"
    t.datetime "reset_password_sent_at"
    t.datetime "remember_created_at"
    t.datetime "created_at", null: false
     t.datetime "updated_at", null: false
     t.index ["email"], name: "index_users_on_email", unique: true
     t.index ["reset_password_token"], name: "index_users_on_reset_password_token", unique: true
    end

   end

Вот ссылка на мой исходный код https://github.com/jslack2537/apiDemoApp

1 Ответ

2 голосов
/ 30 марта 2020

это может сработать, если вы напишите логин внутри того же l oop ..

records.each do |record| 
   u = User.new(record.except('logins').merge('password' => 'encrypted password'))
   u.logins = record['logins'].map{|l| Login.new(l)} 
   u.save!
 end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...