karlley's tech blog

学習メモや記録とか

Rails

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を作成する際にルーティ…

SQLを生成するメソッドを呼ぶ順番は生成するSQLに影響しない

RailsでSQLを生成するメソッドの呼び出し順でSQLが変化するのか分からなかったのでコンソールで試して調べて見ました。 結論 SQLを生成するメソッドを呼ぶ順番は生成するSQLに影響しない。 下の2つのSQLは同一になる。 Book.all.order(:id) Book.order(:id).…

kaminari gemについての雑なまとめ

FBCのプラクティスでkaminari gemを使ってRailsアプリにページネーションを実装しました。 kaminari gemは使ったことが無かったので今後の為にまとめてみました。 karminari とは? ページング処理を実装できるgem。 amatsuda/kaminari: ⚡ A Scope & Engine …

i18nのhuman系メソッドはモデルだけでなくインスタンスからも呼び出せる

i18nでモデル名やカラム名を参照するhuman系メソッドはモデルからしか呼び出せないと思っていましたが、インスタンスからも呼び出せるようです。 human系メソッドとは? i18nでActiveRecordのモデル名、カラム名を参照するメソッド。メソッド名が長いので勝…

i18nで多言語化する

前回の記事ではi18nを使った多言語化用の設定を行いました。 i18_generaor gemを使った方が簡単に生成できそうでしたが理解を深める為に今回はあえて手動で翻訳情報を追加します。 tメソッドについて t メソッドはi18nに用意されているtranslate メソッドの…

Railsのフォームのsubmitをhelpers.submit.createで翻訳できる理由を調べた

FBCのRailsのi18nのプラクティスを進めています。 _form.html.erb 内のフォーム内のsubmitボタンの翻訳情報をhelpers.submit.createやhelpers.submit.update などで参照できるのか分からなかったのでソースコードを読んで調べてみました。 ちなみにVSCodeで…

RailsのコードをVSCodeで読むための設定

Railsの仕様について気になる部分があったのでRails gemのソースコードを読んでみようと思いました。 gemのソースコードをVSCodeで読むための設定について調べました。 結論 bundle open gem_name で開くデフォルトエディタをVSCodeに設定すると便利。 設定…

i18nで多言語化する設定

前回の記事でi18nの概要は掴んだつもりなので、実際に多言語化する設定を行います。 多言語化する方法はいくつかありますが、一番シンプルそうなparamsで言語を切り替える方法を行います。 結論 下記手順で多言語化の設定を行う。 デフォルト言語設定、ロケ…

i18nとは

Railsのプラクティスに入りました。 Railsを国際化するために必要なi18nについて調べました。 結論 i18nとは国際化(多言語化)するためのgem。 アプリケーションの文言を英語以外の 別の1つの言語に翻訳 する機能や 多言語サポート 機能を簡単かつ拡張可能な…

rails s でPlease run rails webpacker:install と表示されて起動しない

Railsの教科書の手順で進めていましたがrails sでアプリが起動しなかったので調べてみました。 結論 node.jsをインストールしてwebpaderをインストールする。 環境 macOS 12.3.1 ruby 3.0.3 Rails 6.1.6 Railsの必要rubyバージョンの確認 下記ページでrails …

バージョン指定してrails new

最新のrails7系ではなくrails6系でrails new したかったのでバージョン指定する手順を調べました。 結論 指定したいRailsをgem経由でインストール rails _バージョン_ new アプリ名 でバージョンを指定してnewする インストールされているrails gemのバージ…

Rails6の開発環境の構築

ついにRailsのプラクティスまで進むことができました。 久しぶりにRailsの環境構築を行ったので備忘録です。 結論 下記ツールをインストールする。 xcode homebrew rbenv yarn Ruby Rails xcode 開発用コマンドラインツール $ xcode-select --install $ xcod…

nil?とempty?の違い

値の有無で真偽値を返すようなメソッドを作る際にnil? とempty? の違いが分からなかったので調べました。 結論 nil? は存在しているか、empty? は空かどうかで真偽値を返す nil? 当たり前だけどnil のみtrue を返す。 ''.nil? => false [].nil? => false fal…