Как запросить подклассы во встроенных документах с помощью mongoid? - PullRequest
2 голосов
/ 06 января 2012

У меня есть коробка со множеством игрушек разных типов:

class Box
    embeds_many :toys
end

class Toy
   field :name
   embedded_in :box
end

class Car < Toy
end

class Doll < Toy
end

Если я нашел нужный объект коробки, как мне запросить его, чтобы найти только машины?

my_box.toys.where(??? Car ??? )

Очевидно, я мог бы перебрать каждую игрушку и извлечь те, где toy.is_a? Car, но я ищу решение, если оно существует, которое просто использует встроенные критерии / искатели mongoid.

1 Ответ

2 голосов
/ 06 января 2012

Хороший вопрос. к счастью, Mongoid использовала метаатрибут _type в документе для обработки подобных сценариев

так что вы можете найти машины в коробке по

  Box.where('toys._type'=>'Car')

Вот и все

...