Associações polimórficas incorporadas no Mongoid

Mongoid é um MongoDB ORM escrito em Ruby e para aplicativos Ruby, incluindo Ruby on Rails.

Recentemente, descobri que uso o polimorfismo no Mongoid. No entanto, não encontro informações úteis sobre como criar / chamar um objeto polimórfico na documentação oficial, apenas declaração. Aqui, vou mostrar alguns exemplos de como criar e usar polimorfismo em objetos incorporados.

class Vehicle
include
Mongoid::Document
embeds_many
:vehicles, as: :moveable

field
:speed, type: Integer
field
:auto_pilot, type: Boolean
field
:name, type: String
end

class Car < Vehicle
embedded_in
:moveable, polymorphic: true
end

class Bike < Vehicle
embedded_in
:moveable, polymorphic: true
end

>> vehicle = Vehicle.new

>> vehicle.vehicles.create({speed: 180, auto_pilot: false, name: "car1"}, Car)

>> vehicle.vehicles.create({speed: 160, auto_pilot: false, name: "bike1"}, Bike)