IT業界転職への道⑧

プログラミング

こんにちは!
今日もブログを読んでいただき、ありがとうございます!!
私は、IT業界へ転職を目指しているCOBUTAと申します!
現在、プログラミングスクールに通っている30代です!
このブログは私と同じ年代の30代の方に向けて書いているブログになります♪
簿記やFPの資格を活かしながら、読んでくださる方の役に立つ情報を発信していきます☆
また、転職までの道のりの記録も合わせて残していこうと思います!

IT業界転職への道

プログラミングスクール21日目となりました。
提出期限が明後日と迫っています。
本日、なんとかテストをクリアできたので、レイアウトを調整して明日提出しようと思っています!!

プログラミングスクール21日目

・1ヶ月目最終課題

最終課題

本日も、メンターに質問(rails)をたくさんしました!
その中で、今後も役立ちそうな情報を本日もいただいたので記録として残そうと思います。

データベースのindexとは

データベースのindexは「索引」のことを指すそうです。

イメージとしては、辞書の索引を思い浮かべてみてください。
調べたい言葉を見つけて詳しい情報へ飛んでいますよね!

これと同じことがデータベースでも、indexを使用することで可能になるそうです!
例えば、nameで探して、idを見つけるような感じです!
索引を利用することで、計算を早めることができると教えていただきました。

今回は、バリデーション で「一意性」を設定するために、マイグレーション のファイルに

def change
add_index :users, :name, unique: true
end

と記載した後に”bundle install”をしたところエラーとなってしまいました。

** 一部抜粋 ****************************************************************************
rails aborted!
StandardError: An error has occurred, this and all later migrations canceled:

SQLite3::ConstraintException: indexed columns are not unique: CREATE UNIQUE INDEX “index_users_on_name” ON “users” (“name”)
〜省略〜
ActiveRecord::StatementInvalid: SQLite3::ConstraintException: indexed columns are not unique: CREATE UNIQUE INDEX
〜省略〜
SQLite3::ConstraintException: indexed columns are not unique
〜省略〜
**********************************************************************************

今回のバリデーション 設定の目的が、同じ名前をもつuserを作らないことでした・・・
しかし、既に練習で登録していたuserのnameで同じものが存在していました。
そのため、起きてしまったエラーということがメンターに相談した結果わかりました。

確かに、バリデーション を設定しようとしたら既に同じ名前のuserがいるのでは設定できないですよね!!

今回の対処法は一度データベースに登録していた情報を削除して、新たに作り直すということをしました。
使用したコマンドは
rails db:migrate:reset
です。
これをターミナルに入力することで、既にあるデータを削除して、新たに作り直せるように設定できました。
このコマンドは開発中のみ使用可能とのお話でした。

実際に使用しているアプリですとuser情報を全て消すことができません。
そういった場合は、rais c コマンドを入力してコンソールを立ち上げて該当部分だけ削除するというお話でした。
この部分については、私自身が現段階でお話を聞いても混乱してしまいそうだったので詳しくお伺いしませんでした。

ちなみに、一意性を設定するのには、アプリ側とデータベース側の両方で設定すると良いそうです。

まとめ

メンターさんへ相談することで、頭の中の?が整理されます。
今まではなんとか自力でやらなきゃと思い、なんとなくで理解したつもりで学習を進めていました。
しかし、今回の課題に取り組む中でなんとなくで理解で進められないと思いました。
もうすぐ1ヶ月が終わってしまいます。。。残りの期間は今まで以上にどんどん質問していこうと思いました。

最後まで読んでいただきありがとうございます!!

⭐︎COBUTA⭐︎

コメント

タイトルとURLをコピーしました