質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Q&A

0回答

576閲覧

Ruby on Rails seed-FuでAssociationを定義した初期データを作成したい

gbp1th

総合スコア17

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

0グッド

0クリップ

投稿2019/03/16 10:42

編集2019/03/16 10:48

前提・実現したいこと

現在、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

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問