У меня есть объект модели ActiveRecord Foo
; он представляет собой стандартную строку базы данных.Предотвращение сохранения ActiveRecord() в экземпляре
Я хочу иметь возможность отображать измененные версии экземпляров этого объекта. Я хотел бы повторно использовать сам класс, так как он уже имеет все перехваты & аспектов, которые мне понадобятся. (Например: у меня уже есть представление, которое отображает соответствующие атрибуты). В основном я хочу клонировать экземпляр модели, изменять некоторые ее свойства и возвращать ее вызывающему (view, test и т. Д.).
Я не не хочу, чтобы эти изменения атрибутов возвращались в базу данных. Тем не менее, я хочу включить атрибут id
в клонированную версию, поскольку это упрощает работу с помощниками маршрутов. Таким образом, я планирую позвонить ActiveRecord::Base.clone()
, вручную установив идентификатор клонированного экземпляра и затем внести соответствующие изменения атрибутов в новый экземпляр. Это меня беспокоит; один save()
на измененном экземпляре, и мои исходные данные будут сбиты.
Итак, я ищу, чтобы заблокировать новый экземпляр, чтобы он ничего не повредил. Я уже планирую позвонить freeze()
(при том понимании, что это предотвращает дальнейшую модификацию объекта, хотя documentation isn't terribly clear). Однако я не вижу очевидного способа предотвратить сохранение().
Что было бы лучшим подходом к достижению этого?
Если вам нужно возиться, что значительно со стандартным объектом ActiveRecord, есть, вероятно, лучший способ подхода к проблеме. – Matchu
Я, безусловно, открыт для альтернатив –