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

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

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

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

Q&A

解決済

1回答

379閲覧

rails db:seed が実行されない(rake aborted!)

pag_jiro

総合スコア10

Ruby on Rails

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

0グッド

0クリップ

投稿2024/04/07 13:28

編集2024/04/08 10:23

実現したいこと

seedファイルにあるデータを反映させる

前提

・seedファイル内にデータはあり
・ローカル、本番環境どちらもデータが無い
・rails cでデータ内容確認済み

発生している問題・エラーメッセージ

一度rails db:migrate:resetをしてしまってから以下エラーが発生するようになりました。

ec2-user:~/environment/* (main) $ rails db:seed Running via Spring preloader in process 19665 rake aborted! ActiveRecord::RecordInvalid: Translation missing: ja.activerecord.errors.messages.record_invalid /home/ec2-user/.rvm/gems/ruby-3.1.2/gems/activerecord-6.1.7.6/lib/active_record/validations.rb:80:in `raise_validation_error' /home/ec2-user/.rvm/gems/ruby-3.1.2/gems/activerecord-6.1.7.6/lib/active_record/validations.rb:53:in `save!' /home/ec2-user/.rvm/gems/ruby-3.1.2/gems/activerecord-6.1.7.6/lib/active_record/transactions.rb:302:in `block in save!' /home/ec2-user/.rvm/gems/ruby-3.1.2/gems/activerecord-6.1.7.6/lib/active_record/transactions.rb:354:in `block in with_transaction_returning_status' /home/ec2-user/.rvm/gems/ruby-3.1.2/gems/activerecord-6.1.7.6/lib/active_record/connection_adapters/abstract/database_statements.rb:320:in `block in transaction' /home/ec2-user/.rvm/gems/ruby-3.1.2/gems/activerecord-6.1.7.6/lib/active_record/connection_adapters/abstract/transaction.rb:319:in `block in within_new_transaction' /home/ec2-user/.rvm/gems/ruby-3.1.2/gems/activesupport-6.1.7.6/lib/active_support/concurrency/load_interlock_aware_monitor.rb:26:in `block (2 levels) in synchronize' /home/ec2-user/.rvm/gems/ruby-3.1.2/gems/activesupport-6.1.7.6/lib/active_support/concurrency/load_interlock_aware_monitor.rb:25:in `handle_interrupt' /home/ec2-user/.rvm/gems/ruby-3.1.2/gems/activesupport-6.1.7.6/lib/active_support/concurrency/load_interlock_aware_monitor.rb:25:in `block in synchronize' /home/ec2-user/.rvm/gems/ruby-3.1.2/gems/activesupport-6.1.7.6/lib/active_support/concurrency/load_interlock_aware_monitor.rb:21:in `handle_interrupt' /home/ec2-user/.rvm/gems/ruby-3.1.2/gems/activesupport-6.1.7.6/lib/active_support/concurrency/load_interlock_aware_monitor.rb:21:in `synchronize' /home/ec2-user/.rvm/gems/ruby-3.1.2/gems/activerecord-6.1.7.6/lib/active_record/connection_adapters/abstract/transaction.rb:317:in `within_new_transaction' /home/ec2-user/.rvm/gems/ruby-3.1.2/gems/activerecord-6.1.7.6/lib/active_record/connection_adapters/abstract/database_statements.rb:320:in `transaction' /home/ec2-user/.rvm/gems/ruby-3.1.2/gems/activerecord-6.1.7.6/lib/active_record/transactions.rb:350:in `with_transaction_returning_status' /home/ec2-user/.rvm/gems/ruby-3.1.2/gems/activerecord-6.1.7.6/lib/active_record/transactions.rb:302:in `save!' /home/ec2-user/.rvm/gems/ruby-3.1.2/gems/activerecord-6.1.7.6/lib/active_record/suppressor.rb:48:in `save!' /home/ec2-user/.rvm/gems/ruby-3.1.2/gems/activerecord-6.1.7.6/lib/active_record/persistence.rb:55:in `create!' /home/ec2-user/environment/inugo/db/seeds.rb:9:in `<main>' /home/ec2-user/.rvm/gems/ruby-3.1.2/gems/railties-6.1.7.6/lib/rails/engine.rb:566:in `load' /home/ec2-user/.rvm/gems/ruby-3.1.2/gems/railties-6.1.7.6/lib/rails/engine.rb:566:in `block in load_seed' /home/ec2-user/.rvm/gems/ruby-3.1.2/gems/activesupport-6.1.7.6/lib/active_support/callbacks.rb:117:in `block in run_callbacks' /home/ec2-user/.rvm/gems/ruby-3.1.2/gems/activesupport-6.1.7.6/lib/active_support/execution_wrapper.rb:91:in `wrap' /home/ec2-user/.rvm/gems/ruby-3.1.2/gems/railties-6.1.7.6/lib/rails/engine.rb:640:in `block (2 levels) in <class:Engine>' /home/ec2-user/.rvm/gems/ruby-3.1.2/gems/activesupport-6.1.7.6/lib/active_support/callbacks.rb:126:in `instance_exec' /home/ec2-user/.rvm/gems/ruby-3.1.2/gems/activesupport-6.1.7.6/lib/active_support/callbacks.rb:126:in `block in run_callbacks' /home/ec2-user/.rvm/gems/ruby-3.1.2/gems/activesupport-6.1.7.6/lib/active_support/callbacks.rb:137:in `run_callbacks' /home/ec2-user/.rvm/gems/ruby-3.1.2/gems/railties-6.1.7.6/lib/rails/engine.rb:566:in `load_seed' /home/ec2-user/.rvm/gems/ruby-3.1.2/gems/activerecord-6.1.7.6/lib/active_record/tasks/database_tasks.rb:450:in `load_seed' /home/ec2-user/.rvm/gems/ruby-3.1.2/gems/activerecord-6.1.7.6/lib/active_record/railties/databases.rake:392:in `block (2 levels) in <main>' /home/ec2-user/.rvm/gems/ruby-3.1.2/gems/activesupport-6.1.7.6/lib/active_support/fork_tracker.rb:10:in `block in fork' /home/ec2-user/.rvm/gems/ruby-3.1.2/gems/activesupport-6.1.7.6/lib/active_support/fork_tracker.rb:10:in `block in fork' /home/ec2-user/.rvm/gems/ruby-3.1.2/gems/activesupport-6.1.7.6/lib/active_support/fork_tracker.rb:8:in `fork' /home/ec2-user/.rvm/gems/ruby-3.1.2/gems/activesupport-6.1.7.6/lib/active_support/fork_tracker.rb:8:in `fork' /home/ec2-user/.rvm/gems/ruby-3.1.2/gems/activesupport-6.1.7.6/lib/active_support/fork_tracker.rb:27:in `fork' /home/ec2-user/.rvm/gems/ruby-3.1.2/gems/activesupport-6.1.7.6/lib/active_support/fork_tracker.rb:8:in `fork' /home/ec2-user/.rvm/gems/ruby-3.1.2/gems/activesupport-6.1.7.6/lib/active_support/fork_tracker.rb:27:in `fork' <internal:/home/ec2-user/.rvm/rubies/ruby-3.1.2/lib/ruby/3.1.0/rubygems/core_ext/kernel_require.rb>:85:in `require' <internal:/home/ec2-user/.rvm/rubies/ruby-3.1.2/lib/ruby/3.1.0/rubygems/core_ext/kernel_require.rb>:85:in `require' -e:1:in `<main>' Tasks: TOP => db:seed (See full trace by running task with --trace)

プレビューにもseedファイルの内容はありませんでした。

試したこと

・EC2の再起動
・他記事で見たrake db:dropから始まるのをやって見ましたが、改善されませんでした。

ec2-user:~/environment/* (main) $ rake db:drop Dropped database 'db/development.sqlite3' Dropped database 'db/test.sqlite3' ec2-user:~/environment/* (main) $ rake db:create Created database 'db/development.sqlite3' Created database 'db/test.sqlite3' ec2-user:~/environment/*(main) $ rake db:schema:load ec2-user:~/environment/* (main) $ rake db:seed rake aborted! ActiveRecord::RecordInvalid: Translation missing: ja.activerecord.errors.messages.record_invalid

・app/config/locales/ja.ymlに日本語設定追加

ja: activerecord: errors: messages: record_invalid: "バリデーションに失敗しました: %{errors}"

下記エラー内容です

c2-user:~/environment/* (main) $ rails db:seed Running via Spring preloader in process 7667 rake aborted! ActiveRecord::RecordInvalid: バリデーションに失敗しました: Email Translation missing. Options considered were: - ja.activerecord.errors.models.admin.attributes.email.taken - ja.activerecord.errors.models.admin.taken - ja.activerecord.errors.messages.taken - ja.errors.attributes.email.taken - ja.errors.messages.taken

https://qiita.com/ta-iga/items/ecf22491700e3d67e7fe の記事を参考にしてみた結果

ec2-user:~/environment/* (main) $ rails db:seed Running via Spring preloader in process 20807 rake aborted! ActiveRecord::RecordInvalid: バリデーションに失敗しました: Genres Translation missing. Options considered were: - ja.activerecord.errors.models.shop.attributes.genres.blank - ja.activerecord.errors.models.shop.blank - ja.activerecord.errors.messages.blank - ja.errors.attributes.genres.blank - ja.errors.messages.blank

管理者のメルアドとパスワードを書き換えた結果、管理者のエラーが消えました!
同じようなことをしたら上記5つのエラーは消えるかもですが、お店のデータを入れているため内容はそのままでいきたいです。
seeds.rbファイルを一度削除して作り直しても同じエラーが発生します。

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

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

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

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

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

satokei

2024/04/08 03:11

エラーメッセージを読みましょう。 > ActiveRecord::RecordInvalid: Translation missing: ja.activerecord.errors.messages.record_invalid エラーメッセージを出力するにも翻訳が見つからないようです。 このため本来のエラーが分からなくなっています。 同じような質問 https://teratail.com/questions/337564
pag_jiro

2024/04/08 06:22

返信ありがとうございます。 添付先の質問も拝読しました。 ActiveRecord::RecordInvalid: Translation missing: ja.activerecord.errors.messages.record_invalidの内容は「日本語訳メッセージのバリテーションが見つかりません」ということでしょうか? 日本語訳するymlファイルは存在しているので、そこに追記するといった感じですか?
pag_jiro

2024/04/08 09:45

返信ありがとうございます! 「config/locales/ja.yml」に追記したら、エラー内容が変わりましたので、質問に追記させて頂きました。 ご確認お願いします。
satokei

2024/04/08 10:25

また翻訳が見つからないようです。 ただ「ja.activerecord.errors.models.admin.attributes.email.taken」は、Email がすでに使われているということっぽいので、seedファイルに 同じ Email があるのではないでしょうか。
pag_jiro

2024/04/08 10:29

返信ありがとうございます! 丁度先ほど、adminメールに関しては書き換えたら該当エラーが消えました! しかし、お店やジャンルのデータをseedに入れているので、他エラーも書き換えたら解消されるのではと思うのですが、コードの書き換え等が発生してしまいます。 どうにかこのseedファイルの内容を変えずに実行できるようにしたいのですが、難しいでしょうか? seedの内容が使われているのであればそのデータを削除できたりしませんか?
satokei

2024/04/08 11:06

seedファイルの内容が、バリデーションに合っていないので、 どちらか(seedファイル or バリデーション)を修正するしかないです。
pag_jiro

2024/04/08 11:55

回答ありがとうございます。 seedファイルを書き換えてみたのですが、エラーは解消されませんでした。 なので初期データを削除して手動で追加する方法に変えました。 返信の内容にそぐわない形での解決で申し訳ないです。
guest

回答1

0

自己解決

seedファイルの内容を重複して更新しようとしている状態でした。
seedには初期データ・管理者データを入れていたのですが、全てデータがあるとしてエラーは発生していましたので、挿入するつもりだった初期データを全て削除し、手動で登録する方法に切り替えました。(管理者はメルアド・パスワードを変更したらいけました)
力技のようなやり方なので解決とは少し違う気がします。
ただ、このようなエラーが出た時は、seedファイルの内容を書き換えなくてはいけないかもしれない?ということだけ頭に入れればいいかもです。

投稿2024/04/08 12:01

pag_jiro

総合スコア10

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.31%

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

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

質問する

関連した質問