Active Recordについて学習した内容をアウトプットとしてまとめました。
同じように学習されている方の参考になれば幸いです。
Active Record とは?
Active RecordはRailsでDB操作するための仕組みです。
通常DBを操作するためにSQL文を自分で書く必要がありますが、Active Recordを活用することでRubyを使ってDBを操作することが出来ます。
以下のようにCRUD操作をRubyを使って行えるのはActive Recordのおかげです。
# データの作成
user = User.create(name: "山田", email: "yamada@example.com")
# データの検索
user = User.find_by(name: "山田")
# データの更新
user.update(name: "山田太郎")
# データの削除
user.destroy
Active Recordの主な機能
1.モデルとテーブルの関連付け
Book
モデルはbooks
テーブルに関連付けられます。これにより、DBのデータをRubyのオブジェクトとして扱えるようになります。
2.データの読み書き
冒頭でも書きましたが、CRUD操作をメソッドを使って行えるようになります。
ちなみにCRUDとは、「Create(作成)」「Read(読み取り)」「Update(更新)」「Delete(削除)」の頭字語です。
3.バリデーション
Active Recordを使って、データを保存する前にバリデーションを行うことが出来ます。
例えば、保存する属性(name
など)が空でないか、一意かどうか、特定のフォーマットに沿っているかなど様々な検証が出来ます。
class User < ApplicationRecord
validates :name, presence: true
end
irb> user = User.new
irb> user.save
=> false
irb> user.save!
ActiveRecord::RecordInvalid: Validation failed: Name can't be blank
4.コールバック
コールバックは、モデルの更新や保存の前後で自動的に処理を実行する仕組みです。
例えば以下のようなものがあります。
class User < ApplicationRecord
# ユーザーが作成された後にメールを送信
after_create :send_welcome_mail
private
def send_welcome_mail
# ウェルカムメールを送信
UserMailer.welcome_email(self).deliver_later
end
end
# 使用例
user = User.create(name: "山田", email: "yamada@example.com")
# => ユーザーが作成された後、自動的にウェルカムメールが送信される
5.モデル間の関連付け
モデル間の関連付けを行うことが出来ます。
関連付けでは、1対1、1対多、多対多の記述が可能です。
著者一人に対して、複数の本があるという関連付けは次のように行います。
class Author < ApplicationRecord
has_many :books
end
class Book < ApplicationRecord
belongs_to :author
end
author = Author.find(1)
author.books # 著者の全ての本を取得
author.books.create(title: "新しい本") # 著者に紐づく本を作成
これにより、著者に紐づく本を取得したり、本の追加や削除をするメソッドなどが使えるようになります。
最後まで読んでいただきありがとうございました!
参考