Можно ли получить настоящий полиморфизм в Mongoid?
Пример:
class Company
include Mongoid::Document
has_many :workers, as: :workable
end
class Worker
include Mongoid::Document
field :hours
belongs_to :workable, polymorphic: true
end
class Manager < Worker
field :order
has_many :contributors
end
class Contributor < Worker
field :task
end
Проблема с этим заключается в том, что он проходит через рабочий суперкласс, чтобы попытаться выяснить тип ссылочных документов. Это означает, что, хотя HOURS можно манипулировать, поля, принадлежащие подклассам, не могут быть похожи на CONTRIBUTORS, ORDER, TASK - нет. Есть ли способ сделать это по-настоящему полиморфным?
И чтобы уточнить, когда я говорю «по-настоящему полиморфный», я имею в виду, возможно ли иметь объекты в качестве рабочих и определить, к какому типу они относятся в более позднее время, чтобы можно было установить их конкретные поля. Таким образом, у меня есть возможность зацикливаться на всех работниках, а также возможность задавать конкретные поля работника, такие как порядок и задача, когда создается Contributor или Manager.
Также, если полиморфизм выполним, как бы выглядел контроллер и представление, заполняющее поля диспетчера и участника в компании?
Спасибо