2009-09-26 5 views
1

Мне нужно универсальное решение для клонирования для глубокого клонирования модуля со всеми его переменными экземпляра в Ruby. Я не могу использовать метод .clone, так как он не работает с объектами activerecord (не копирует поле id).Универсальное решение клонирования объектов

Я также видел обходное решение, используя нагрузку маршала-дампа + маршала, но он не работает на модульных и одноэлементных объектах. Кто-нибудь знает какое-либо решение для глубокого клонирования модуля? Или, может быть, у вас есть другое решение для моей реальной проблемы.

У меня есть модуль с переменными экземпляра, и мне нужно клонировать его на другой модуль, изменять объекты в клонированном объекте, а затем снова клонировать первый модуль без изменений, внесенных вторым модулем.

ответ

0

Вы можете использовать dup вместо clone для объектов ActiveRecord, но dup не копирует однотонные методы (определенные на объектах) + он изменяет замороженное состояние на испорченный.

Что касается Rails, у вас также есть плагин Deep cloning для клонирования ActiveRecord.

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