2012-04-16 2 views
-1

Я использую Mongoid в первый раз. Я хочу хранить коллекцию электронных писем, у которых есть тема, тело и массивы получателей, cc и bcc. Пример:Создание встроенных документов Mongoid

{to: [{email: '[email protected]', name: 'Andrew'}], cc: ... 

Однако я не могу понять, как моделировать эти данные с помощью Mongoid. Я думаю, что термин для них называется вложенными документами, но все, что я пробовал, похоже, не работает правильно. Как правильно создать мои модели с помощью Mongoid?

+0

Что вы попробовали в точности? –

+0

Вы читали документы? В нем объясняется, как сделать это очень четко: http://mongoid.org/docs/documents.html –

+0

Эта ссылка лучше, я думаю: http://mongoid.org/docs/relations/embedded/1-n.html –

ответ

2

Вот решение. Вы можете указать имя класса, если хотите повторно использовать класс для нескольких полей:

class Email 
    include Mongoid::Document 

    embeds_many :to_recipients, :class_name => "Recipient" 
    embeds_many :cc_recipients, :class_name => "Recipient" 
    embeds_many :bcc_recipients, :class_name => "Recipient"  
    embeds_one :from, :class_name => "Recipient" 

    field :subject, type: String 
    field :body_text, type: String 
    field :body_html, type: String 
end 

class Recipient 
    include Mongoid::Document 
    field :email_address, type: String 
    field :name, type: String 
    validates :email_address, :presence => true 
    embedded_in :emails 
end 
Смежные вопросы