Насколько я понимаю, внедренные документы хранятся в виде атрибутов внутри ваших родительских документов - у них нет parent_ids, поскольку они на самом деле являются частью их родителя (следовательно, «встроенные»).Таким образом, единственный способ переопределить их - это клонировать и удалить - как вы уже сделали.
Возможно, вы могли бы сократить ваш метод на одну строку, но это все.
def move(new_parent)
unless new_parent.id == parent.id
new_parent.items << self.dup
self.delete
end
end