Railsのポリモーフィック
ポリモーフィック
ポリモーフィックは子が複数の親に属していて、かつ全てが同じ関係性の場合に使います。
関連が多くなると、◯◯_idを書くのが手間です。
ポリモーフィックを実装するとこれを書かなくて良くなり、DRYを保てます。
railsでの実装
railsでは各モデルの関連を記述する部分に手を加えてポリモーフィックを実装します。
#子 belongs_to :noticeable, :polymorphic => true #親1 has_many :items, :as => :noticeable #親2 has_many :items, :as => :noticeable
これを記述すると子テーブルにnoticeable_idとnoticeable_typeカラムが追加されます。
noticeable_idには親のidが、noticeable_typeには親のクラス名(String)が代入されます。
感想
参考のQiitaの記事にもありますが、ポリモーフィックは便利ですが理解していないとコードが少し読みにくくなります。
ですので多少の関連(3つくらいまで?)なら使わないほうが良いように感じました。
あと、Stringでクラス名が入るのにも違和感を感じます。