前提・実現したいこと
現在、ECサイトを作成しています。
seedを用いた初期データの作成しようと思っております。
gem seed-Fuを利用し作成をしようとしています。
子テーブル(Address)のデータに関連している親テーブル(User)のidを指定して初期データを作成したいのですが
rake abortedと表示され作成ができません。
発生している問題・エラーメッセージ
vagrant@ubuntu-bionic:/vagrant/hogehoge$ ./bin/rake db:seed_fu Running via Spring preloader in process 5014 == Seed from /vagrant/Nagano/db/fixtures/01_user.rb - User {:id=>1, :email=>"admin@test.com", :encrypted_password=>"test123", :phone_number=>"080-0000-0000", :registration=>true, :kanji_last=>"管理", :kanji_first=>"使用者", :katakana_last=>"カンリ", :katakana_first=>"ユーザー", :admin_user=>true} - User {:id=>2, :email=>"user@test.com", :encrypted_password=>"test123", :phone_number=>"080-0000-0001", :registration=>true, :kanji_last=>"一般", :kanji_first=>"使用者", :katakana_last=>"イッパン", :katakana_first=>"ユーザー", :admin_user=>false} == Seed from /vagrant/Nagano/db/fixtures/02_address.rb - Address {:id=>1, :user_id=>#<User id: 1, email: "admin@test.com", created_at: "2019-03-16 10:16:32", updated_at: "2019-03-16 10:16:32", phone_number: "080-0000-0000", registration: true, kanji_last: "管理", kanji_first: "使用者", katakana_last: "カンリ", katakana_first: "ユーザー", admin_user: true>, :postcode=>"277-0000", :prefecture=>"千葉県", :city=>"柏市", :street=>"どっかしら0-0-1", :building=>"なんとかアパートメント"} rake aborted! ActiveRecord::NotNullViolation: SQLite3::ConstraintException: NOT NULL constraint failed: addresses.user_id: INSERT INTO "addresses" ("id", "postcode", "prefecture", "city", "street", "building", "created_at", "updated_at") VALUES (?, ?, ?, ?, ?, ?, ?, ?) /var/lib/gems/2.5.0/gems/seed-fu-2.3.9/lib/seed-fu/runner.rb:46:in `eval' /var/lib/gems/2.5.0/gems/sqlite3-1.3.13/lib/sqlite3/statement.rb:108:in `block in each' /var/lib/gems/2.5.0/gems/sqlite3-1.3.13/lib/sqlite3/statement.rb:107:in `loop' /var/lib/gems/2.5.0/gems/sqlite3-1.3.13/lib/sqlite3/statement.rb:107:in `each' /var/lib/gems/2.5.0/gems/activerecord-5.2.2/lib/active_record/connection_adapters/sqlite3_adapter.rb:222:in `to_a' /var/lib/gems/2.5.0/gems/activerecord-5.2.2/lib/active_record/connection_adapters/sqlite3_adapter.rb:222:in `block (2 levels) in exec_query' /var/lib/gems/2.5.0/gems/activesupport-5.2.2/lib/active_support/dependencies/interlock.rb:48:in `block in permit_concurrent_loads' /var/lib/gems/2.5.0/gems/activesupport-5.2.2/lib/active_support/concurrency/share_lock.rb:187:in `yield_shares' /var/lib/gems/2.5.0/gems/activesupport-5.2.2/lib/active_support/dependencies/interlock.rb:47:in `permit_concurrent_loads' /var/lib/gems/2.5.0/gems/activerecord-5.2.2/lib/active_record/connection_adapters/sqlite3_adapter.rb:213:in `block in exec_query' /var/lib/gems/2.5.0/gems/activerecord-5.2.2/lib/active_record/connection_adapters/abstract_adapter.rb:579:in `block (2 levels) in log' /var/lib/gems/2.5.0/gems/activerecord-5.2.2/lib/active_record/connection_adapters/abstract_adapter.rb:578:in `block in log' /var/lib/gems/2.5.0/gems/activesupport-5.2.2/lib/active_support/notifications/instrumenter.rb:23:in `instrument' /var/lib/gems/2.5.0/gems/activerecord-5.2.2/lib/active_record/connection_adapters/abstract_adapter.rb:569:in `log' /var/lib/gems/2.5.0/gems/activerecord-5.2.2/lib/active_record/connection_adapters/sqlite3_adapter.rb:212:in `exec_query' /var/lib/gems/2.5.0/gems/activerecord-5.2.2/lib/active_record/connection_adapters/abstract/database_statements.rb:122:in `exec_insert' /var/lib/gems/2.5.0/gems/activerecord-5.2.2/lib/active_record/connection_adapters/abstract/database_statements.rb:154:in `insert' /var/lib/gems/2.5.0/gems/activerecord-5.2.2/lib/active_record/connection_adapters/abstract/query_cache.rb:21:in `insert' /var/lib/gems/2.5.0/gems/activerecord-5.2.2/lib/active_record/persistence.rb:185:in `_insert_record' /var/lib/gems/2.5.0/gems/activerecord-5.2.2/lib/active_record/persistence.rb:732:in `_create_record' .. .. .. .. .. .. .. 1万文字を超えたので省略しています。
該当のソースコード
/hogehoge/db/fixtures/01_user.rb
ruby
1user = User.seed do |s| 2 s.id = 1 3 s.email = "admin@test.com" 4 s.encrypted_password = "test123" 5 s.phone_number = "080-0000-0000" 6 s.registration = true 7 s.kanji_last = "管理" 8 s.kanji_first = "使用者" 9 s.katakana_last = "カンリ" 10 s.katakana_first = "ユーザー" 11 s.admin_user = true 12end 13 14user = User.seed do |s| 15 s.id = 2 16 s.email = "user@test.com" 17 s.encrypted_password = "test123" 18 s.phone_number = "080-0000-0001" 19 s.registration = true 20 s.kanji_last = "一般" 21 s.kanji_first = "使用者" 22 s.katakana_last = "イッパン" 23 s.katakana_first = "ユーザー" 24 s.admin_user = false 25end
/hogehoge/db/fixtures/01_address.rb
ruby
1Address.seed do |s| 2 s.id = 1 3 s.user_id = User.find_by(id: 1) 4 s.postcode = "277-0000" 5 s.prefecture = "千葉県" 6 s.city = "柏市" 7 s.street = "どっかしら0-0-1" 8 s.building = "なんとかアパートメント" 9end 10 11Address.seed do |s| 12 s.id = 2 13 s.user_id = User.find_by(id: 2) 14 s.postcode = "277-0001" 15 s.prefecture = "千葉県" 16 s.city = "柏市" 17 s.street = "どっかしら0-0-2" 18 s.building = "なんとかアパートメント" 19end
ここに問題に対して試したことを記載してください。
補足情報(FW/ツールのバージョンなど)
ruby
ruby on rails
gem seed-Fu
あなたの回答
tips
プレビュー