【Rails】ポリモーフィックとは

以前、railsのアソシエーションについて記事にまとめましたが、今回はその応用である「ポリモーフィック関連づけ」について紹介したいと思います。

Contents

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

railsにおけるポリモーフィック(polymorphic)関連づけとは、「ある1つのモデルが他の複数のモデルに属していることを、1つの関連付けだけで表現」する方法です。公式のrailsガイドには、以下のように「写真(picture)モデルがあり、このモデルを従業員(employee)モデルと製品(product)モデルの両方に従属させたい」場合の例が挙げられています。

class Picture < ApplicationRecord  belongs_to :imageable, polymorphic: trueendclass Employee < ApplicationRecord  has_many :pictures, as: :imageableendclass Product < ApplicationRecord  has_many :pictures, as: :imageableend

ちなみにpolymorphicという言葉は「多形」を意味する英単語で、ギリシャ語のpolymorphos(「多くの形態の」)から派生した言葉のようです。Javaなどのオブジェクト指向言語には、同じクラスを継承したサブクラスに部分的に異なった処理を行わせる「ポリモーフィズム」という概念がありますが、それもこのpolymorphosからですね。

参考

最新情報をチェックしよう!