2013-12-03 2 views
0

У меня есть коллекция MongoDB в схеме какMongoid как включить вложенный атрибут в объект?

deal 
    - id 
    - locations 
     [ 
      {city: A, zip: 111} 
      {city: B, zip: 222} 
      {city: C, zip: 333} 
     ] 

Я использовал Mongoid для взаимодействия с MongoDB.

class Deal 
    include Mongoid::Document 
    store_in collection: :deals 
     ... 
    end 

С Deal.find ('xxx') Я могу получить объект d. Я могу использовать формат, такой как d.id и d.locations. Однако d.locations [0] является объектом Hash. Я могу использовать формат d.locations [0] [: city], а не предпочтительные d.locations [0] .city. Как это достичь?

ответ

0

Вы можете определить новый Mongoid объекта, который будет погруженным в вашем объекте

class Deal 
    include Mongoid::Document 
    embeds_many :locations 
     ... 
    end 

    class Location 
    include Mongoid::Document 
    embedded_in :deal 
    field :city, :zip 
    end 
+0

Спасибо за ваше предложение. Это должно работать, но у меня слишком много таких полей, и я не хочу, чтобы каждый из них был таким. ActiveRecord может автоматически преобразовывать все вложенные атрибуты, поэтому я предполагаю, что в MongoID есть такой способ. – user1991452

Смежные вопросы