По моему опыту, полиморфные отношения = хорошие и ИППП = PainInTheArse.
Я никогда не видел пример ИППП, который не превращается в запутанный беспорядок.
Если у вас разныевещи, которые имеют одинаковые отношения с одним или несколькими другими классами, затем сохраняют их как разные вещи со своими собственными таблицами.Например, прикрепление документов: вы можете прикрепить документы к множеству разных вещей.Для этого используйте полиморфные отношения, называемые, например, «документируемыми».
Document
belongs_to :documentable, :polymorphic => true
#expects a documentable_id field (integer) and a documentable_type field (string)
User
has_many :documents, :as => :documentable
Company
has_many :documents, :as => :documentable