У меня есть объект модели ActiveRecord Foo
;он представляет стандартную строку базы данных.
Я хочу иметь возможность отображать измененные версии экземпляров этого объекта.Я хотел бы повторно использовать сам класс, так как он уже содержит все необходимые мне аспекты и аспекты.(Например: у меня уже есть представление, которое отображает соответствующие атрибуты).По сути, я хочу клонировать экземпляр модели, изменить некоторые его свойства и передать его вызывающей стороне (просмотр, тестирование и т. Д.).
Я делаю , а не хочу получить эти модификации атрибутовобратно в базу данных.Однако я хочу включить атрибут id
в клонированную версию, поскольку это значительно облегчает работу с помощниками маршрута.Таким образом, я планирую вызвать ActiveRecord::Base.clone()
, вручную установить идентификатор клонированного экземпляра, а затем внести соответствующие изменения атрибута в новый экземпляр.Это меня беспокоит, хотя;один save()
на измененном экземпляре, и мои исходные данные будут засорены.
Итак, я пытаюсь заблокировать новый экземпляр, чтобы он не повредил ничему другому.Я уже планирую вызвать freeze()
(при том понимании, что это предотвращает дальнейшую модификацию объекта, хотя документация не очень понятна ).Однако я не вижу очевидного способа предотвратить сохранение ().
Каков наилучший подход для достижения этой цели?