🙆

Railsの polymorphic(ポリモーフィック)とは何ぞや?

2024/02/21に公開

ポリモーフィック

Railsのポリモーフィック(Polymorphic)リレーションシップは、1つのモデルが複数の他のモデルと関連付けることができるようにする機能です。

どういう時に使う?

ポリモーフィック関連付けは、主に次のようなシナリオで使用されます:

1.1つのモデルが複数の他のモデルと関連付けられる場合。
2.複数のモデルが同じモデルと関連付けられる場合。

具体例

ブログを例に出します。ブログ投稿にはコメントが記事や画像の両方に関連付けられる場合を考えてみます。
このような場合、コメントモデルに対してポリモーフィックな関連付けを使用することができます。

以下は、ポリモーフィックな関連付けの例です:

class Comment < ApplicationRecord
  belongs_to :commentable, polymorphic: true
end
class Post < ApplicationRecord
  has_many :comments, as: :commentable
end
class Image < ApplicationRecord
  has_many :comments, as: :commentable
end

こんな感じで使うみたいです。

参考資料

ChatGPT

https://qiita.com/sazumy/items/726e7097c6ca4a9ca6e3

https://railsguides.jp/association_basics.html

Discussion