rails 独学して軽くにちゃんまとめつくる

読者です 読者をやめる 読者になる 読者になる

unknown attribute XXX_id と言われたのでカラムを消して、作った。

unknown attribute XXX_id

というエラーをはかれたかたは、単純にそのカラム名をつけわすれています。

unknown attribute event_id

とかかれた方は以下のコマンドでカラム名の一覧をたしかめてみてください。

たとえば User  Ticketモデルの中のカラム名をさがしたいときは

rails c

Ticket.new

と入力すると

 => #<Ticket id: nil, user_id: nil, event_info_id: nil  comment: nil, created_at: nil, updated_at: nil>

こういうのがでてきます。ぼくがほしいのは event_id なのですが、間違えてevent_info_id を作ってしまったようです。ですので、この邪魔な event_info_id を消し、event_id を作ってみましょう。わざわざモデルを作り直す必要はありません。

 

rails generate migration Removeカラム名Fromテーブル名 カラム名:型名

と入力すればいいから、

rails generate migration RemoveEventInfoFromTickets event_info:references

rails db:migrate

でオーケーです。ぼくは event_info_id を references で指定して作成したので型名はreferences としました。(作成するときにevent : references とすると、作成されるカラム名は、 event_id になります。)

 

つぎに event_id を作成しましょう。

rails generate migration Addカラム名Toテーブル名 カラム名:型名

と入力すればいいから

rails generate migration AddEventToTickets event:references

rails db:migrate

そのサーバーを再起動させるのをわすれないように。

Ctrl + C をおし、 rails s を入力する。

 

 

ーーーーーーーーーー参考したサイト

ruby on railsのデータベースのテーブルにカラムを追加、削除する | joppot

rails generate migrationコマンドまとめ - Qiita