Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

ポリモーフィック関連を定義する設定をまとめてみた[Rails]

More than 1 year has passed since last update.

はじめに

ポリモーフィック関連を定義するのに必要な設定をまとめておきます。

ポリモーフィック関連とは

ポリモーフィック関連とは、一つのモデルが複数の親モデルに紐付く関連のことです。

必要な設定

ここでは、複数の親モデルとして、BookモデルとAuthorモデルが存在し、子モデルとしてMemoモデルが存在しているとします。

親モデル

asオプション付きのhas_manyメソッドを宣言します。
asオプションで関連名を変更します。

book.rb
class Book < ApplicationRecord
  .
  .
  has_many :memos, as: :memoable
  .
end  
author.rb
class Author < ApplicationRecord
  .
  .
  has_many :memos, as: :memoable
  .
end

子モデル

polymorphicオプション付きのbelongs_toメソッドを宣言します。

memo.rb
class Memo < ApplicationRecord
  .
  belongs_to :memoable, polymorphic: true
  .
end

子テーブル

子テーブルには下記の二つのカラムを用意します。

memoable_type
memoable_id

おわりに

各々の状況に応じて、memoableの箇所を書き換えるとポリモーフィック関連が成立します。
思ったより簡単ですね。

こちらの記事が役に立ったという方は、いいね、よろしくお願いします(^^)

また、takuyaninのマイページにRails, Rubyに関していくつか記事をまとめてますので、よければご参考ください。

takuyanin
Just keep going. My favorites: Programming/ English/ American TV series/ Travel/ Dance/ Music
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away