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)