Rails7ベーシック試験の実施を前にして、「試験に備えよう!」というこのコラムも4回目を迎えました。
前回はRailsアプリケーション開発で最も重要と言える3つの要素、「ビュー」「モデル」「コントローラー」のうち、「ビュー開発」を取り上げました。
今回は引き続き、「モデル開発」について取り上げます。
「モデル開発」
出題範囲「モデル開発」では、Active Record、Active Modelについて全体の20%の割合で出題されます。
MVCアーキテクチャにおけるモデルは、アプリケーションの中核となる機能そのもの、ビジネスロジックとビジネスロジックによって扱われるデータへのアクセス処理などが集約されます。
ORM
ORM(Object Relational Mapping、O/Rマッピング、O/Rマッパーとも)とは、オブジェクト指向言語のオブジェクトとリレーショナルデータベースとを結びつける機能です。
RailsではActive Recordによって提供されます。
Active Recordについて学ぶ前に、ORMについてもある程度知識をつけておくことをお薦めします。
クエリメソッド
データベースからデータを取得するためのメソッドとして、クエリメソッドがあります。
以下に挙げるような基本的なメソッドについては、その機能と使い方について一通り抑えておきましょう。
- find、find_by
- find_each
- first、last、take
- where
- not、or
- order
- select、distinct
- limit、offset
インスタンスの取得、生成
モデルのインスタンスを生成する方法としては、上のようなクエリメソッドを用いる他にもいくつかのメソッドが用意されています。
データベースに関係なくモデルのインスタンスを生成する機能や、データベースのレコードの状況によって挙動を変えるメソッドなどがあります。
名前が似たメソッドも多く混乱してしまうかも知れませんが、使い方の違いについて抑えておきましょう。
- new
- find_or_initialize_by
- find_or_create_by
- create_or_find_by
アソシエーション
モデルとモデルの関係を表すために用いられるメソッドがあります。
メソッド自体やメソッドのオプションはもちろん、これらのメソッドによって表される1:1、1:n、m:nといった関係の種類についてもあわせて理解して置く必要があります。
- belongs_to
- has_one、has_many
バリデーション
モデルに設定された値が適切なものかどうかを検証し、不正な値をデータベースに保存したりプログラムの処理に問題を起こさないようにするための機能がバリデーションです。
Railsでは、Active Modelによって提供されます。ActiveModel::Validations
下に定義された各検証機能の機能について、また実際にそれらの機能を使うためのメソッド validates
や validate_of_*
について一通り抑えておきましょう。
たとえば、ActiveModel::Validations::PresenceValidator
については以下ように2通りの使い方を確認しておきましょう。
- validates :name, presence: true
- validates_presence_of :name
まとめ
ベーシック試験の試験範囲「モデル開発」について解説しました。
この範囲も出題の割合は20%と大きめですが、データベースからデータを取り出すためのクエリメソッド、不正なデータを扱わないようにするためのバリデーションは重要な機能であり、Railsアプリケーションを効率的に開発するためにはぜひとも抑えておきたいところです。
覚えるべきメソッド、オプションも多いですが是非頑張ってみてください。
具体的な学習については、Ruby on Rails チュートリアルをお薦めしています。
Ruby on Rails チュートリアル
https://railstutorial.jp/
また、今後公式問題集の発売も予定しておりますのでお待ちください。