【Rails】外部キー制約とは?

作成したアプリのコードレビューで外部キー制約を追加するように指摘されたので調べて見ました。 結論 外部キーを保存するカラムに対して関連付けしているテーブルの主キーのみを保存するように制限し、データ不整合を防止すること。 具体的には次の制約が追…

【Rails】ビューファイルのパーシャルにはローカル変数で値を渡すべき

パーシャルを使ってビューファイルを共通化する際にlocals オプションを使うべきなのか分からなかったので調べてみました。 結論 パーシャルにはlocals オプションを使ってローカル変数で値を渡した方が良い。 partialは呼び出し元のテンプレートとだけ紐づ…

ブログをはじめて良かったという話

これは「フィヨルドブートキャンプ Part 2 Advent Calendar 2022」の20日目の記事です。 昨日はGennyBoyさんの「家庭・仕事とフィヨルドブートキャンプでの学びを両立させるために4時起き生活にしてみた話」でした。 朝活仲間として学習や輪読会を楽しく続け…

Railsのform_withの使い方

Railsのform_with メソッドへの理解が曖昧だったので簡単にまとめました。 form_with の特徴 Rails5.1以降はform_tag とform_for が非推奨になり、替わりにform_with が推奨になる form_for 的な使い方、form_tag 的な使い方の2つの使い方ができる オプショ…

gitでpush済みのコミットを取り消す方法

誤ってpushしたコミットを取り消す必要が出たのでやり方を調べました。 結論 push済みのコミットを取り消すにはgit reset かgit revert を使う。 git reset: コミットを取り消す、強制pushする git revert: 打ち消しコミットを作成する、追加pushする コミッ…

フィヨルドブートキャンプに入会して1年経ちました

2022年11月5日でフィヨルドブートキャンプ(以下「FBC」)に入会して1年が経ちました。 今年も残り1ヶ月になったのでちょっと早いですが今年の振り返りをしておきます。 学習時間について 私の1年間の学習時間です。 合計時間: 約950時間 月平均: 約80時間 週…

Railsでロールバックしてマイグレーションを修正する

FBCでRailsを使ったユーザーフォローのプラクティスを進めています。 間違ったマイグレーションをロールバックして修正する必要性が出たのでやり方を調べました。 結論 下記手順でDBをロールバックできる。 マイグレーションのバージョン確認 rollback する …

git stashの使い方

gitで管理している作業を並行して進める事が多くなってきたのでgit stash の使い方をまとめておきます。 git stashとは? stashを使用すると、コミットしていない変更を退避することができます。 stashで現在の変更を退避して、今すぐやりたい作業をして、退…

VSCodeにsolargraphを導入する

曖昧だったVSCodeへのsolargraphの導入について整理したのでまとめておきます。 結論 VSCodeでsolargraphを使うにあたって以下の2つが必要。 VSCode拡張機能Ruby Solargraph solargraph gem 下記手順で導入、設定する。 VSCode拡張機能Ruby Solargraph の導…

gitでコンフリクトした時に変更を一括で反映する

gitでコンフリクトが発生して手動ではなく一括で変更を反映したかったのでやり方を調べました。 結論 git checkout --ours ファイルパス、git checkout --theirs ファイルパス を使う。 --ours: 取り込み側の変更を残す --theirs: 取り込まれる側の変更を反…

Active StorageのN+1問題を解決する

FBCのActive Storageを使ったユーザーアイコンの表示機能を実装しています。 Active Storageを使用した画像取得時にN+1問題が発生していると指摘を受けたので解決法を調べました。 結論 Active StorageのN+1問題はwith_attached_attachment_name スコープを…

Pandocを使ってmarkdownからdocxに変換する方法

markdownで書いたメモをGoogleドキュメントで編集したかったので、markdownファイルからdocxファイルへの変換方法を調べました。 結論 Pandocを使うことでmarkdownファイルからdocxファイルに変換できる。 Pandocとは? .md から.docx 等のドキュメントに変…

Active Storageでアップロードする画像をimage_processingでリサイズする

Active Storageを使った画像アップロード機能を実装中です。 MiniMagickを使った画像リサイズの情報はたくさん見つかったのですが、image_processing gemを使った情報はあまり多くない印象でした。 Rails6からimage_processing gemが必要になったようなので…

Active Storageで画像アップロードに必要なgemについて

RailsのActive Storageを使った画像アップロード機能の実装を行っています。 Active Storageを使う際にgem等の多くのツールが必要になりますが、使用用途が分からずどのツールを使えば良いか分かりにくかったのでまとめました。 Active Storageを使った画像…

Active Storageを使った画像アップロード機能のセットアップ

FBCのRailsプラクティスも残り僅かになってきました。 Active Storageを使って画像アップロード機能を実装するという新しい課題に着手しました。 Acrive Storageを使った画像アップロード機能のセットアップについて調べました。 今回は次のような条件での実…

letter opener webでRailsのメール送信を確認する

前回の記事でRailsにdeviseでメール認証を使ったパスワード再設定を実装しました。 RailsのAction Mailerを使って送信したメールの内容をletter_opener_webというgemで確認できるようなので使い方を調べました。 結論 下記手順でletter_opener_web gemを導入…

RailsのdeviseでCookieを削除してログアウトする

deviseの課題を提出できたので気になってたことをちょっとだけ深堀りしてます。 今回はdeviseでのログイン認証を行っているアプリに対してCookieを削除してログアウトする方法を調べました。 結論 ChromeのDevToolsのApplication タブ内のCookies を選択して…

Railsで特定のアクションのみバリデーションをかけたい

FBCのRailsのdeviseのプラクティスで特定のアクションのみバリデーションをかけたかったので方法を調べました。 結論 特定のアクションのみバリデーションをかけるにはon: オプションでアクションを指定する。 バリデーションはデフォルトでレコード作成、更…

Railsで作成したカラム名を変更する

FBCのdeviseプラクティスで作成したアプリのカラム名を変更したかったので方法を調べました。 結論 作成済みのカラム名の変更は以下手順で行う。 カラム名変更用マイグレーションファイル作成 マイグレーションファイルにカラム名変更の記述を追加 マイグレ…

Railsで整数のみ、桁数指定でバリデーションを追加する

FBCのdeviseプラクティスで郵便番号に整数のみ、桁数指定でバリデーションを追加したかったので方法を調べました。 結論 バリデーションで以下を指定することで整数のみ、桁数指定を追加できます。 整数のみ: numericality: { only_integer: true } 桁数指定…

deviseをdevise-i18nを使って多言語化する

前回の記事ではRailsにdeviseでメール認証を使ったパスワード再設定を実装しました。 今回はアプリ全体の表示をdevise-i18n gemで多言語化します。 tigrish/devise-i18n: Translations for the devise gem 実装対象のアプリはRailsにdeviseを使ってログイン…

Railsにdeviseでメール認証を使ったパスワード再設定を実装する

前回の記事ではRailsアプリにdeviseを使ってユーザーページを追加しました。 今回はdeviseが用意してくれているrecoverble モジュールを使ってメール認証を使ったパスワード再設定機能を追加します。 実装対象のアプリはdeviseを使ってログイン機能を実装す…

Railsにdeviseを使ってユーザーページを追加する

前回の記事ではRailsアプリにdeviseでログイン機能を実装しました。 今回はプラクティスの終了条件である次の3つのページを追加します。 ユーザー詳細: users#show ユーザー編集: users#edit ユーザー一覧: users#index 実装対象のアプリはdevise gemのイン…

Railsにdeviseを使ってログイン機能を実装する

前回の記事ではRailsアプリにdevise gemをインストールしてセットアップしました。 今回は実際に認証機能付きモデルを追加し、ログイン機能を実装します。 実装は下記の手順で行います。 認証機能付きモデルの作成 認証機能用ビューの作成 認証機能用コント…

Railsにdeviseをインストールしてセットアップする

FBCのRailsでdevise gemを使ったプラクティスに入りました。 devise gemのインストールとセットアップについて調べました。 追加設定は基本的には行わず、動作確認が行える最低限のdeviseの機能が使える状態を目標にしました。 devise gemを追加するアプリケ…

dotenv gemの使い方

GitHubにアップしたくないAPIキーやパスワード等を環境変数として設定するgem。 bkeepers/dotenv: A Ruby gem to load environment variables from `.env`. インストール Gemfile に追記後bundle install するだけ。 # Gemfile ... # 追記 gem 'dotenv-rails…

ERB Lintについて

FBCのRailsのプラクティスにERB Lintの導入が必須になったので概要を調べてみました。 結論 ERB LintとはrubocopではチェックできないERBファイルのスタイルをチェックしてくれるツール。 Shopify/erb-lint: Lint your ERB or HTML files インストール Gemfi…

Railsでテーブルにカラムを追加する

FBCのdevise gemを使ったプラクティスを進行中です。 今回作成するRailsアプリではdevise gemを使った認証機能とプロフィールページの作成が終了条件になっています。 このプロフィールページにはdeviseのデフォルトで設定されるメールアドレスに加えて、郵…

Gitで未追跡のファイルやディレクトリを削除したい

FBCのRailsのdevise gemを使ったプラクティスを進めています。 RailsやGemが自動生成したファイルを削除したくなる状況が度々あったので、Gitで未追跡のファイルやディレクトリを削除する方法を調べてみました。 結論 git clean コマンドを使うとgit未追跡の…

rails g controller で不要なルーティングの追加をスキップしたい

FBCのRailsのプラクティスでdevise gemの使い方を学んでいます。 ログイン機能とプロフィールページの追加にUserモデルのcontrollerが必要になりました。 既にに必要なルーティングは追加済みだったのでrails g コマンドでcontrollerを作成する際にルーティ…