0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Active Recordについて

Last updated at Posted at 2024-11-02

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

Railsガイドより引用

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: "新しい本")  # 著者に紐づく本を作成

これにより、著者に紐づく本を取得したり、本の追加や削除をするメソッドなどが使えるようになります。

最後まで読んでいただきありがとうございました!

参考

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?