【Rails】Active RecordにおけるN+1問題の原因と回避方法
![](https://autovice.s3.ap-northeast-1.amazonaws.com/uploads/article/picture/218/rails-1.jpg?X-Amz-Expires=600&X-Amz-Date=20240727T125951Z&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIASDZCAGFGH4Y2EDPG%2F20240727%2Fap-northeast-1%2Fs3%2Faws4_request&X-Amz-SignedHeaders=host&X-Amz-Signature=44b0efde5ac46a57d33fce259792362c264a974e4928e9afeff97b7f3c99c9c2)
はじめに
RailsにおけるN+1問題は、データベースからデータを取得する際に起こり得るパフォーマンス上の問題です。
具体的には、1つのクエリで親モデルを取得した後に、その親モデルに関連する子モデルのデータを取得するために複数の個別のクエリが発行されることが原因です。これにより、データベースへの負荷が増加し、ア ...
【Rails】モデルに列挙型(enum)を定義し、使いこなす方法
![](https://autovice.s3.ap-northeast-1.amazonaws.com/uploads/article/picture/189/enum.png?X-Amz-Expires=600&X-Amz-Date=20240727T125951Z&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIASDZCAGFGH4Y2EDPG%2F20240727%2Fap-northeast-1%2Fs3%2Faws4_request&X-Amz-SignedHeaders=host&X-Amz-Signature=967ce39a30fe51e4757a1d8f5014b7e3717599a75de056945b8d8d5784b61a0a)
はじめに
Railsはモデルでカラム名と同名の列挙型(enum)を定義することで、カラムと列挙型の変数を紐付けることができます。カラムと列挙型の変数を紐付けると、カラムに対して様々な便利な使い方ができるようになります。
本記事では、モデルに列挙型(enum)を定義し、使いこなす方法について説明します。
モデルに ...
【Rails】モデルに外部キーを設定する方法とよく起こるエラー内容について
![](https://autovice.s3.ap-northeast-1.amazonaws.com/uploads/article/picture/176/rails-1.jpg?X-Amz-Expires=600&X-Amz-Date=20240727T125951Z&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIASDZCAGFGH4Y2EDPG%2F20240727%2Fap-northeast-1%2Fs3%2Faws4_request&X-Amz-SignedHeaders=host&X-Amz-Signature=f500be789b9cf81268d7ed31689b7bacdfe80a6cfc417a18c500ebead0084d99)
はじめに
Railsでモデルに外部キーを設定する方法について説明します。
モデルに外部キーを設定する
リレーションシップ
今回は1つのブログ記事は複数のコメントを持つ1対多のリレーションシップを例に説明します。現在はArticleモデルのみ存在し、外部キーとしてArticleモデルのIDを持つCommentモデ ...
【Rails】Active Record(モデル)の書き方《バリデーション篇》
![](https://autovice.s3.ap-northeast-1.amazonaws.com/uploads/article/picture/133/6.png?X-Amz-Expires=600&X-Amz-Date=20240727T125951Z&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIASDZCAGFGH4Y2EDPG%2F20240727%2Fap-northeast-1%2Fs3%2Faws4_request&X-Amz-SignedHeaders=host&X-Amz-Signature=a828c113f4f06f133b137237e37d25785a9ace792a60e3836d6d9d474c72da10)
はじめに
ActiveRecord(モデル)のバリデーション設定を行うことで、実際にデータが保存される前に不適合データを弾くことができます。ほとんどのデータベースはカラムに制約を設定することができますが、Railsアプリのモデルでバリデーションを行えば、Railsアプリとデータベース間の無駄なやり取りを減らすこ ...
【Rails】Active Record(モデル)の書き方《基本篇》
![](https://autovice.s3.ap-northeast-1.amazonaws.com/uploads/article/picture/132/5.png?X-Amz-Expires=600&X-Amz-Date=20240727T125951Z&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIASDZCAGFGH4Y2EDPG%2F20240727%2Fap-northeast-1%2Fs3%2Faws4_request&X-Amz-SignedHeaders=host&X-Amz-Signature=da711184b7b345a5b6a31aa6c4b6a482683f32e877cf51ca337417f9d96992bd)
はじめに
ActiveRecord(モデル)は、MVCモデルのMに相当します。モデルはRailsアプリとデータベースの橋渡し役を担います。データベースの種類(MySQL、MariaDB、PostgreSQL、SQLite)にかかわらず、統一的なインターフェースでデータの操作(取得、作成、更新、削除)を行うことが ...
【Rails】マイグレーションの書き方《Seed篇》
![](https://autovice.s3.ap-northeast-1.amazonaws.com/uploads/article/picture/121/9.png?X-Amz-Expires=600&X-Amz-Date=20240727T125951Z&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIASDZCAGFGH4Y2EDPG%2F20240727%2Fap-northeast-1%2Fs3%2Faws4_request&X-Amz-SignedHeaders=host&X-Amz-Signature=8b82184bf6a1da706390abb804b2e96c28a5de80ba985489e2a0b503ead2ee2b)
はじめに
Railsには、マイグレーションで作成したデータベーススキーマにテストデータを登録する機能が用意されています。それがSeedと呼ばれるものです。Seedはテストデータを登録する処理をRubyで記述し、コマンドを実行することでデータベースにテストデータを登録することができます。
Seedを使うと、大量の ...
【Rails】マイグレーションの書き方《実行篇》
![](https://autovice.s3.ap-northeast-1.amazonaws.com/uploads/article/picture/120/8.png?X-Amz-Expires=600&X-Amz-Date=20240727T125951Z&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIASDZCAGFGH4Y2EDPG%2F20240727%2Fap-northeast-1%2Fs3%2Faws4_request&X-Amz-SignedHeaders=host&X-Amz-Signature=2f7623a2133b99b5eb595e26b88eb3532c628e4a737c0f9f21bc82994cb4fc84)
はじめに
ActiveRecordの機能のひとつ、マイグレーションは便利な機能ですが、使い方を間違えるとせっかく作ったデータベースを破壊してしまいかねません。データベースの操作を間違えたときに有用なロールバックも、きちんと手順を守って行わないとマイグレーションの整合性が崩れてしまう可能性があります。
本記事では ...
【Rails】マイグレーションの書き方《作成・編集篇》
![](https://autovice.s3.ap-northeast-1.amazonaws.com/uploads/article/picture/119/7.png?X-Amz-Expires=600&X-Amz-Date=20240727T125951Z&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIASDZCAGFGH4Y2EDPG%2F20240727%2Fap-northeast-1%2Fs3%2Faws4_request&X-Amz-SignedHeaders=host&X-Amz-Signature=8f037af8391d69eb97d2639a3bc2def91541330ddc2e60b1a538c880200e6bd6)
はじめに
データベースベンダーに依存することなくテーブルの作成やカラムの追加/削除などが行えるマイグレーションというActiveRecordの機能があります。マイグレーションはデータベースのスキーマ変更をバージョンとして管理するので、いつでもスキーマ変更を元に戻したり再実行できたりします。
本記事では、マイグレ ...
![](/assets/profile-1055d2f9a1a248bf051584d3572c2f2d79d103e956e0fcee48f1cab5cd40472b.jpg)
坂井 光太郎 / Sakai Kotaro
Ruby on Rails を中心とした Web アプリ開発全般に関する技術情報をまとめています。業務に関するご依頼・ご相談、当サイトに対するご感想やメッセージはコンタクトフォームからお気軽にお問い合わせください。