投稿とプロフィールを結びつけたいのですが、外部キーを取得しようとしてもエラーになってしまう
エラー分は以下です。
Mysql2::Error: Table 'app_name_development.posts' doesn't exist
ただし、shema.rb
には、user
の外部キーであるuser_id
が記載されています。
#問題のソースコード
20210314114705_add_user_id_to_posts.rb
class AddUserIdToPosts < ActiveRecord::Migration[6.0] def change add_reference :posts, :user, foreign_key: true add_reference :profiles, :user, foreign_key: true end end
20210314061456_create_profiles.rb
class CreateProfiles < ActiveRecord::Migration[6.0] def change create_table :profiles do |t| t.string :name t.integer :mania_histry t.string :enjoy_point t.timestamps end end end
20210314061527_devise_create_users.rb
# frozen_string_literal: true class DeviseCreateUsers < ActiveRecord::Migration[6.0] def change create_table :users do |t| ## Database authenticatable t.string :email, null: false, default: "" t.string :encrypted_password, null: false, default: "" ## Recoverable t.string :reset_password_token t.datetime :reset_password_sent_at ## Rememberable t.datetime :remember_created_at ## Trackable # t.integer :sign_in_count, default: 0, null: false # t.datetime :current_sign_in_at # t.datetime :last_sign_in_at # t.string :current_sign_in_ip # t.string :last_sign_in_ip ## Confirmable # t.string :confirmation_token # t.datetime :confirmed_at # t.datetime :confirmation_sent_at # t.string :unconfirmed_email # Only if using reconfirmable ## Lockable # t.integer :failed_attempts, default: 0, null: false # Only if lock strategy is :failed_attempts # t.string :unlock_token # Only if unlock strategy is :email or :both # t.datetime :locked_at t.timestamps null: false end add_index :users, :email, unique: true add_index :users, :reset_password_token, unique: true # add_index :users, :confirmation_token, unique: true # add_index :users, :unlock_token, unique: true end end
20210514061412_create_posts.rb
class CreatePosts < ActiveRecord::Migration[6.0] def change create_table :posts do |t| t.text :content t.timestamps end end end
202102513060741_create_active_storage_tables.active_storage.rb
# This migration comes from active_storage (originally 20170806125915) class CreateActiveStorageTables < ActiveRecord::Migration[5.2] def change create_table :active_storage_blobs do |t| t.string :key, null: false t.string :filename, null: false t.string :content_type t.text :metadata t.bigint :byte_size, null: false t.string :checksum, null: false t.datetime :created_at, null: false t.index [ :key ], unique: true end create_table :active_storage_attachments do |t| t.string :name, null: false t.references :record, null: false, polymorphic: true, index: false t.references :blob, null: false t.datetime :created_at, null: false t.index [ :record_type, :record_id, :name, :blob_id ], name: "index_active_storage_attachments_uniqueness", unique: true t.foreign_key :active_storage_blobs, column: :blob_id end end end
##ここからmodelを書いていきます
post.rb
class Post < ApplicationRecord has_many_attached :images belongs_to :user validates :content, presence: true end
profile.rb
class Profile < ApplicationRecord has_one_attached :image belongs_to :user validates :name, presence: true validates :mania_histry, presence: true validates :enjoy_point, presence: true end
user.rb
class User < ApplicationRecord # Include default devise modules. Others available are: # :confirmable, :lockable, :timeoutable, :trackable and :omniauthable devise :database_authenticatable, :registerable, :recoverable, :rememberable, :validatable has_many :posts has_one :profile end
#やってみた事
docker-compose run web rails db:migrate:reset
をしてみましたが、migration
の段階で同様のエラーで詰まってしまいます。他には、docker-compose run web rails db:drop
をして、create
して、migrate
していくといった事もやってみましたがだめでした。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。