В Mongoid, как я могу передать внедренный документ другому родителю? - PullRequest
2 голосов
/ 01 июня 2011

Я использую следующий код ниже, но я бы предпочел не удалять / копировать. Раньше я мог изменять родительский идентификатор, но он не существует для встроенных документов в Mongoid / MongoDB

def move(new_parent)
  if self._parent != new_parent
    copy = self.dup
    self.delete
    new_parent.items << copy
  end
end

1 Ответ

2 голосов
/ 03 июня 2011

Насколько я понимаю, внедренные документы хранятся в виде атрибутов внутри ваших родительских документов - у них нет parent_ids, поскольку они на самом деле являются частью их родителя (следовательно, «встроенные»).Таким образом, единственный способ переопределить их - это клонировать и удалить - как вы уже сделали.

Возможно, вы могли бы сократить ваш метод на одну строку, но это все.

def move(new_parent)
  unless new_parent.id == parent.id
    new_parent.items << self.dup
    self.delete
  end
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...