2024-01-01から1年間の記事一覧
はじめに SS(サーバーサイド)とFE(フロントエンド)の開発で、特に意識せず進めてきましたが、ふと疑問に思ったことを記事にまとめてみました。 FEはキャメルケース、SSはスネークケースになっている理由 キャメルケースが使われる理由 (FE) JavaScriptや…
Railsの mark_for_destruction とは?基本的な使い方を解説! 初めて使用する機会があり、便利だなと思ったので記事にしました。 Railsでは、関連付けられたレコードを同時に更新することができます。中でも mark_for_destruction は、関連オブジェクトを削…
ネストされたTransactionにおける例外処理の挙動 今回、transactionの挙動について改めて勉強できたので、記事にしたいと思います Railsではtransactionメソッドを利用して、データベース操作を1つのトランザクションとして扱います。しかし、トランザクショ…
概要 ※かなり雑な状態でのブログ記事となりますのでご了承ください macの初回環境構築って、大変ではないでしょうか? 初期設定完了後にやることは、 必要なアプリのインストール(chrome, firefox, etc) パッケージのインストール(ruby, node, etc) その他の…
概要 実務で考える機会があったので、記事にしてみました。 Rails の enum 機能は、モデル内で状態を簡単に管理するための機能です。 通常、enumはintegerでDBに保存されるのですが、stringにすることで、DB上でぱっと分かりやすいので採用しました。 しかし…
概要 開発では、関連データを多く扱うためにN+1問題が頻繁に発生します。 今回、初めてN+1の解消を行う中で、曖昧だったpreloadとeager_loadについて、詳しく学ぶことができたので、記事にしてみました 内容 1. N+1とは 未経験のときには、曖昧な知識でした…
概要 Rails の belongs_to アソシエーションにおいて、optional: trueを設定するかで、関連するオブジェクトのクエリ発行に違いがあることを知ることができたので、記事にしてみました。 内容 通常、belongs_to を設定すると、その関連付けはデフォルトで必…
概要 Sidekiqは、Ruby on Railsアプリケーションでよく使われる非同期のバックグラウンドジョブ処理ライブラリです。バックグラウンドジョブを使うことで、ユーザーが直接待つ必要のない処理を非同期で実行することができます しかし、Sidekiqではジョブに渡…
はじめに トランザクション処理とは トランザクションの基本について トランザクションとは、一連のデータベース操作をまとめて実行し、すべてが成功した場合にのみ変更を確定させる(コミット)機能です。もし途中でエラーが発生した場合は、すべての変更を…
概要 実際の業務でrspecを書いてるときに発生し、理解に少し時間がかかったので記事にしました。 テストは同じ結果をみているはずなのにと思っていましたが、ActiveRecordのオブジェクトの違いで落ちていました。 内容 実務とは異なりますが、下記のようなア…
概要 privateメソッドは、クラス内部の実装であるため、通常通りのテストができません。 publicメソッドのようにテストを書くとエラーになってしまいます。 今回、 Rspecでprivateメソッドをテストをする方法を学んだのでこちらに記事にしました 内容 privat…
概要 今回も、意識することなく使っていたメソッドです。 mapとpluckの違いについてまとめてみました! 内容 何が違うのか? map mapはRubyのArrayクラスのメソッドですが、Enumerableモジュールを介して他でも利用可能。 配列、ハッシュなどを繰り返し処理…
概要 何気なく、使っていた下記のようなテストですが、 expect(subject).to be_truthy 正しく使い方を知らないと、通るテストを書いているだけ出会ったことを学んだので、共有します 内容 今回、テストを書こうとしていたものは下記のようなメソッドです def…
概要 Enumerizeでしかデフォルト値を設定できないと思っていましたが、 Enumでもデフォルトを設定できるようなので、共有記事です 内容 Enumのデフォルト値を設定する enum status: { draft: 0, published: 1 }, _default: draft こんな形で、デフォルト値を…
概要 RailsのActiveRecordでよく使う、firstメソッド。 よく User.firstのような形でコンソールでサンプルを取得する時に使うのではないでしょうか 今回、firstメソッドについて書いてみました 内容 firstメソッドは、IDが先頭のレコードを返しているのか? …
概要 モデルにカラムの追加を行うようなタスクは日常茶飯事ではないでしょうか? その度に、バリデーションの検証をする必要があります。 いままで、コンソールで確認するときに、該当モデルをnewして、他のattributesに値を入れて、 やっと新しく追加したat…
概要 validationの書き方について、疑問に思うことがありまとめてみました 内容 正規表現と空文字のvalidationを書くときは、下記のように書くかと思います。 外部に指定する validates :attribute, format: { with: 正規表現, message: "正しい形式で入力し…
概要 migrationをしよう、もしくはロールバックしようと思ったときにでくわす up 20240228201536 ********** NO FILE ********** ファイルが無いため、何もできない状態になったときの対処法について書きたいと思います 原因 開発中にはよくあることだと思い…
概要 Migrationファイルを追加するときに、必ずつけてほしいコマンドを紹介します。 after こちらのコマンドは、どのカラムの後に追記するかを指定することができます。 初期生成時は、気にする必要はありません。 create_table :posts do |t| t.string :tit…