実現したいこと
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ファイルを一度削除して作り直しても同じエラーが発生します。
エラーメッセージを読みましょう。
> ActiveRecord::RecordInvalid: Translation missing: ja.activerecord.errors.messages.record_invalid
エラーメッセージを出力するにも翻訳が見つからないようです。
このため本来のエラーが分からなくなっています。
同じような質問
https://teratail.com/questions/337564
返信ありがとうございます。
添付先の質問も拝読しました。
ActiveRecord::RecordInvalid: Translation missing: ja.activerecord.errors.messages.record_invalidの内容は「日本語訳メッセージのバリテーションが見つかりません」ということでしょうか?
日本語訳するymlファイルは存在しているので、そこに追記するといった感じですか?
質問への追記ありがとうございます。
「config/locales/ja.yml」に追記しても同じでしょうか?
また、一時的に日本語を設定を無効化して確認する方法もあるようです。
https://qiita.com/Keichan_15/items/dc69bfd382bd4d1cb996
返信ありがとうございます!
「config/locales/ja.yml」に追記したら、エラー内容が変わりましたので、質問に追記させて頂きました。
ご確認お願いします。
また翻訳が見つからないようです。
ただ「ja.activerecord.errors.models.admin.attributes.email.taken」は、Email がすでに使われているということっぽいので、seedファイルに 同じ Email があるのではないでしょうか。
返信ありがとうございます!
丁度先ほど、adminメールに関しては書き換えたら該当エラーが消えました!
しかし、お店やジャンルのデータをseedに入れているので、他エラーも書き換えたら解消されるのではと思うのですが、コードの書き換え等が発生してしまいます。
どうにかこのseedファイルの内容を変えずに実行できるようにしたいのですが、難しいでしょうか?
seedの内容が使われているのであればそのデータを削除できたりしませんか?
seedファイルの内容が、バリデーションに合っていないので、
どちらか(seedファイル or バリデーション)を修正するしかないです。
使ったことはないですが、これが利用できるかもしれません。
https://github.com/mbleigh/seed-fu
回答ありがとうございます。
seedファイルを書き換えてみたのですが、エラーは解消されませんでした。
なので初期データを削除して手動で追加する方法に変えました。
返信の内容にそぐわない形での解決で申し訳ないです。

回答1件
あなたの回答
tips
プレビュー