デバック課題メモ
課題反省点
ログをちゃんと見る!!!
ルーティングエラーが出た際、以前遭遇したdeleteがgetで飛んでしまう問題と勘違いして同じようにrails-ujsをインストールして対応したが、エラーが修正されずに長いこと悩んでいた。
リダイレクト先が指定されていないことは分かっていたが、何故かブログとコメントの詳細画面に遷移する方法を探して結局解決できなかった。
パーシャルが表示されない問題
初歩的な部分なのでパッと気付きたかったところ。
# NG <% render 'shared/error_messages' %> # OK <%= render 'shared/error_messages'%>
マイグレーションファイル注意点
- マイグレーションファイルはデータベースを作成した歴史のため、安易にゴミ箱に入れない。
rails db:migrate
実行済みでup状態
になっているマイグレーションファイル自体は絶対削除したり編集しない。- 削除する際は必ず
down状態
になっているのを確認してから削除すること。
カラムのデータ型を変えたい
課題解説では都合上ファイルを直接書き換えていたため、以下の対応が完全に正しいか分からないがメモとして残しておく。
想定
アソシエーションで関連付けがされており、外部キー制約によってデータ型の変更が阻害された。
このため、通常通りデータ型の変更マイグレーションファイルを作ってrails db:migrateを実行しても弾かれてしまう。
①参照を削除する必要がある。
remove_reference :テーブル名, :参照先, foreign_key: true, index: false
ちなみにindex: falseとは
add_reference :テーブル名, :参照先
で記載したテーブルに参照先_id
が自動的に作られるが、その際index: false
オプションを明示的に指定しない限り、デフォルトでそのカラムのインデックスも生成されている。削除する際は自動でデフォルトで付与されたindexも削除する必要があるのでindex: false
と記載する。
疑問点
removeで削除する際もforeign_key: true
にする理由が分からない。false
ではないのか。
②データ型の変更マイグレーションを作成
rails g migration ChangeUsersNameDataBooleanToString
def change change_column :テーブル名, :カラム名, :データ型 end
これで記載したデータ型に変更することができる。
なお、変更後の型にintegerやboolean型を指定する場合は書き方が異なるらしい。下記参考サイトを確認。
【Rails】テーブルやカラムの追加・名前の変更・削除・データ型を変更する方法を実例で解説
③削除した参照を再度付与するマイグレーションファイルを作成
add_reference :テーブル名, :参照先, foreign_key: true
indexは自動付与、foregin_keyオプションをつけることで外部キー制約が追加される。
参考にしたサイト
【Rails】 マイグレーションファイルを徹底解説! | Pikawaka