Добавлен в существующие EmbeddedDocuments в MongoMapper - PullRequest
0 голосов
/ 05 июня 2011

Возьмите следующие документы MongoMapper.

class Schedule
  include MongoMapper::Document

  key :name, String
  key :description, String
  key :active, Boolean

  many :periods

  timestamps!
  userstamps!
end

class Period
  include MongoMapper::EmbeddedDocument

  key :number, Integer
  key :descriptor, String
  key :begin, Time
  key :end, Time
end

Кроме того, возьмите следующую маршрутизацию Padrino.

post :period, :map => '/schedule/period' do
  s = Schedule.first(params[:id])
  s.periods = [
    :number => 1,
    :descriptor => "This is a description.",
    :begin => Time.now,
    :end => Time.now
  ]
end

Но, если у меня уже есть несколько periods в расписании, выиграля просто перезаписываю существующий periods?Как я могу избежать этого?

1 Ответ

1 голос
/ 06 июня 2011

Увы, методы связи еще не документированы на mongomapper.com. Но ...

Используйте оператор concat, который определен для ассоциаций:

s.periods << {
  :number => 1,
  :descriptor => "This is a description.",
  :begin => Time.now,
  :end => Time.now
}

Вы можете передать его в виде хэша или документа.

...