Rails Diary

プログラミングの学習記録です。

デバック課題メモ

課題反省点

ログをちゃんと見る!!!
ルーティングエラーが出た際、以前遭遇したdeleteがgetで飛んでしまう問題と勘違いして同じようにrails-ujsをインストールして対応したが、エラーが修正されずに長いこと悩んでいた。
リダイレクト先が指定されていないことは分かっていたが、何故かブログとコメントの詳細画面に遷移する方法を探して結局解決できなかった。

パーシャルが表示されない問題

初歩的な部分なのでパッと気付きたかったところ。

# NG
<% render 'shared/error_messages' %>

# OK
<%= render 'shared/error_messages'%>

マイグレーションファイル注意点

  • マイグレーションファイルはデータベースを作成した歴史のため、安易にゴミ箱に入れない。
  • rails db:migrate実行済みでup状態になっているマイグレーションファイル自体は絶対削除したり編集しない。
  • 削除する際は必ずdown状態になっているのを確認してから削除すること。

カラムのデータ型を変えたい

課題解説では都合上ファイルを直接書き換えていたため、以下の対応が完全に正しいか分からないがメモとして残しておく。

想定
アソシエーションで関連付けがされており、外部キー制約によってデータ型の変更が阻害された。
このため、通常通りデータ型の変更マイグレーションファイルを作ってrails db:migrateを実行しても弾かれてしまう。

①参照を削除する必要がある。

3.6 参照|Railsガイド

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

Rails の部分テンプレートが表示されなくて躓いたメモ - Qiita

Proプラン - Railsガイド

【Rails】テーブルやカラムの追加・名前の変更・削除・データ型を変更する方法を実例で解説