エラーまでの経緯
- 『Team』という**'devise'作ったmodelと、それに紐づく『team_profile』と『team_blog』というmodel**があった。
class Team < ApplicationRecord acts_as_paranoid # Include default devise modules. Others available are: # :confirmable, :lockable, :timeoutable, :trackable and :omniauthable devise :database_authenticatable, :registerable, :recoverable, :rememberable, :validatable, :confirmable, :lockable, :timeoutable, :trackable validates :name, uniqueness: true, length: { maximum: 50 }, presence: true has_many :team_blogs, dependent: :destroy has_one :team_profile, dependent: :destroy end
class TeamProfile < ApplicationRecord belongs_to :team mount_uploader :image, ImageUploader mount_uploader :background_image, BackgroundImageUploader end
class TeamBlog < ApplicationRecord validates :title, presence: true belongs_to :team, dependent: :destroy has_rich_text :content mount_uploader :thumbnail, ThumbnailUploader end
schema.rbはそれぞれ⬇︎のようになっています。
t.index ["team_id"], name: "index_team_profiles_on_team_id", unique: true t.index ["team_id"], name: "index_team_blogs_on_team_id"
2. teamモデルを削除した方が良い可能性が出てきたため、migrationファイルを作成し、下記のmigrationでteam_blogsとteam_profileからteamカラム とreference を削除、
あとteamテーブルをドロップしました。(gitで直前までcommitしてあるので、試しにやって戻せばいいと考えていました。)
remove_reference :team_profiles, :team, foreign_key: true remove_reference :team_blogs, :team, foreign_key: true
3.以上まで行い最後のコミット位置まで、下記のコマンドで戻すことにしました。
git reset --hard HEAD
無事にファイルは最新のコミットの状態に戻りました。
4.データベース のエラーが出る
その後rails sコマンドでサーバーをスタートして、localhost:3000にアクセスすると⬇︎のようなエラーが出ました
ActiveRecord::PendingMigrationError - Migrations are pending. To resolve this issue, run: rails db:migrate RAILS_ENV=development : Started POST "/__better_errors/bfcee0bf2ddce78c/variables" for ::1 at 2020-02-21 21:32:40 +0900
どうやらteamモデルが存在していないことになってるみたいです。(schema.rbを確認してもちゃんとteamsテーブルはありますし、team.rbファイルは存在しているのですが)
⬇︎rails console
irb(main):001:0> Team.all Traceback (most recent call last): 1: from (irb):1 ActiveRecord::StatementInvalid (PG::UndefinedTable: ERROR: relation "teams" does not exist) LINE 8: WHERE a.attrelid = '"teams"'::regclass ^
やったこと
rails db:reset
rails
1rails db:drop
などやってみましたが、下記のように返ってきます。
rails
1ActiveRecord::NoEnvironmentInSchemaError: 2 3Environment data not found in the schema. To resolve this issue, run: 4 5 rails db:environment:set RAILS_ENV=development 6 7/Users/USERNAME/workspace/APP_NAME/bin/rails:9:in `<top (required)>' 8/Users/USERNAME/workspace/APP_NAME/bin/spring:15:in `<top (required)>' 9bin/rails:3:in `load' 10bin/rails:3:in `<main>' 11Tasks: TOP => db:reset => db:drop => db:check_protected_environments 12(See full trace by running task with --trace)
解決策がわからないので、アドバイスいただければ幸いです。
よろしくお願いいたします。
Ruby: 2.6.3
rails: 6.0.0.1
potgresql: 12.1
回答1件
あなたの回答
tips
プレビュー