webプロダクトいんふぉ

webの気になった情報を発信中!!

Rails標準のO/RマッパーであるActive Recordとは?

O/Rマッパー

Object/Relatinalの略で、リレーショナルデータベースとオブジェクト指向言語との橋渡しを受け持つライブラリです。

そもそも、アプリケーション(フロント)側で使用するオブジェクトモデルと、データベースが利用するリレーショナルモデルは決定的に構造が異なるため、フォームから受け取った値などをオブジェクトから一つ一つ取り出したりといった手順が必要でした。

単純な作業ではあるが、上記の手順などがアプリケーションコードの半分以上を占めていたと言われています。

このようなコードの冗長化を解消するために、オブジェクトモデルとリレーショナルモデルのミスマッチを解消するためのツールです。

例えば、usersテーブルみたいなのがあり、下記のようなカラムを用意してあげます。

  • id
  • email
  • tel
  • password

そうしたら、上記のカラムに対応するオブジェクトを用意すれば、

{id: 1

email: aaaa@aaa.com

tel: 000-0000-000

password: password}

このままデータベースに登録することができます。つまり、オブジェクトを分解してidはidカラムに対応しているというような設定が必要なくなります。

Acrive Record

Active Recordを利用することで、リレーショナルデータベース(Excelのような表形式のデータ)をあたかもオブジェクトであるかのように操作ができるようになります。

その上、基本的にはsqlコマンドを記述する必要がありません。sqlにはMySQLPostgreSQL毎に一部書き方が違いますが、O/Rマッパーは内部的にその差異を吸収してくれるので、接続先のデータベースを変更してもアプリケーションへの影響が最小限に抑えられます。