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

Categories:Ruby on Rails

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

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

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

class Picture < ApplicationRecord
  belongs_to :imageable, polymorphic: true
end

class Employee < ApplicationRecord
  has_many :pictures, as: :imageable
end

class Product < ApplicationRecord
  has_many :pictures, as: :imageable
end

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

参考

返信がありません

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です