前提・実現したいこと
rails db:migrate
できません。。
モデルの紐付けを行っています。
子に親 id を持たせたいです。
comments(子)にpost(親)のidを持たせたいです。
発生している問題・エラーメッセージ
mark_naito@marknoMacBook-Air CRUD_app_5 % rails db:migrate == 20210410082130 AddPostIdComments: migrating ================================ -- add_reference (:comments, :post, {:null=>false, :index=>true}) rails aborted! StandardError: An error has occurred, this and all later migrations canceled: undefined method `add_reference ' for #<AddPostIdComments:0x00007fea3fe32340> /Users/mark_naito/workspace/runteq/event/Basic_ability_task/CRUD_app_5/db/migrate/20210410082130_add_post_id_comments.rb:4:in `up' /Users/mark_naito/workspace/runteq/event/Basic_ability_task/CRUD_app_5/bin/rails:9:in `<top (required)>' /Users/mark_naito/workspace/runteq/event/Basic_ability_task/CRUD_app_5/bin/spring:15:in `<top (required)>' bin/rails:3:in `load' bin/rails:3:in `<main>' Caused by: NoMethodError: undefined method `add_reference ' for #<AddPostIdComments:0x00007fea3fe32340> /Users/mark_naito/workspace/runteq/event/Basic_ability_task/CRUD_app_5/db/migrate/20210410082130_add_post_id_comments.rb:4:in `up' /Users/mark_naito/workspace/runteq/event/Basic_ability_task/CRUD_app_5/bin/rails:9:in `<top (required)>' /Users/mark_naito/workspace/runteq/event/Basic_ability_task/CRUD_app_5/bin/spring:15:in `<top (required)>' bin/rails:3:in `load' bin/rails:3:in `<main>' Tasks: TOP => db:migrate (See full trace by running task with --trace)
該当のソースコード
class AddPostIdComments < ActiveRecord::Migration[5.2] def add_reference :comments, :post, null: false, index: true end
class Post < ApplicationRecord has_many :comments end
class Comment < ApplicationRecord belongs_to :post end
mark_naito@marknoMacBook-Air CRUD_app_5 % rails db:migrate:status database: /Users/mark_naito/workspace/runteq/event/Basic_ability_task/CRUD_app_5/db/development.sqlite3 Status Migration ID Migration Name -------------------------------------------------- up 20210410081100 Create posts up 20210410081238 Create comments down 20210410082130 Add post id comments
よろしくお願いします。
マイグレーションは「rails generate migration AddPartNumberToProducts」のように、generate コマンドで生成したファイルですか?
「def 」に対応する名前付けが抜けています。「def change」にした場合、なにか変化は見られますか?
回答ありがとうございます!
rails g コマンドで生成したファイルです!
下記のように記述したら直りました!
def change
add_reference :comments, :post, foreign_key: true
end
解決した場合、内容をまとめて自己回答し、それをベストアンサーに設定することで、この質問を解決済みにすることができます
教えていただきありがとうございます!!
回答1件
あなたの回答
tips
プレビュー