Rails学習中に出てくるActive Recordについて、自分なりに調べたことを簡単にまとめます。
Active Recordとは何か?
MVCのM、つまりモデルに関わる仕組み。ORMフレームワークとしてさまざまな機能を備えています。
ORM(オブジェクト/リレーショナルマッピング)
アプリケーションが持つオブジェクトを、リレーショナルデータベースのテーブルに接続すること。
Railsでは、これを取り入れることで、SQL文を直接書く代わりにアプリケーションにおけるオブジェクトの属性やリレーションシップをデータベースに保存することも、データベースから読み出すこともできるようになります。
主な機能
CRUD(データの読み書き)
controllerのアクションでよく見るコード、これにもActive recordが活用されています。
Create(データの作成)
user = User.new(name: "Michael Hartl", email: "mhartl@example.com")
user.save
/*Userテーブルに、名前とメールアドレスを設定。その後、saveメソッドでテーブルにデータを保存している。*/
Read(データの読み込み)
users = User.all
/*データベースからすべての値を取得*/
user = User.find(params[:id])
/*Railsのshowアクションやeditアクションなどで使用する記法。params[:id]でクライアントから送信されたURLやフォームで送信された情報をもとに、該当のIDのデータを取得している。*/
Update(データの更新)
user = User.find(params[:id])
user.update(name: "Foo Bar", email: "foobar@example.com")
/*取得したクライアントの情報を、updateメソッドで書き換えている。*/
Delete(データの削除)
user = User.find(params[:id])
user.destroy
/*取得したデータをdestroyメソッドで破棄している。*/
バリデーションの設定
モデルにバリデーションを記述することで、テーブルに保存する際の様々なルールを作ることができます。
class User < ApplicationRecord
validates :name, presence: true, length: { maximum: 50 }
end
例えば、このように書くと、nameカラムに値を保存する際には、入力必須(presence: true)、長さは50文字以内(length: { maximum: 50 })のように細かい指定が可能。
他にも、Acrive Recordには、コールバックやマイグレーションなどの機能もあります。
まとめ
・Active Recordを活用することで、簡単にモデルとのやり取りを行うことができる!
参考
https://railsguides.jp/active_record_basics.html
https://railstutorial.jp/
https://qiita.com/ryokky59/items/a1d0b4e86bacbd7ef6e8