У меня есть модель Rails с различными атрибутами и отношениями has_many с другими моделями. В представлении я хочу, чтобы пользователь мог вводить / изменять значения, которые будут изменять значения в загруженном объекте и возвращать результаты, рассчитанные по ним, всякий раз, когда они вносят изменения. Однако я не хочу, чтобы значения изменялись в базе данных, пока они не выберут «Сохранить». Проблема, с которой я сталкиваюсь, заключается в том, что переменные, которые я связываю с коллекциями, извлекаются из базы данных после каждого нового изменения. Поэтому, если я использую что-то вроде следующего:
@model.attributes = params[:model]
это длится продолжительность этого конкретного вызова модели, но в следующий раз, когда пользователь вносит изменение, коллекция перезагружается, теряя все предыдущие изменения, кроме самого последнего. Я пытался использовать переменную экземпляра, например:
@costs ||= self.costs
Но всякий раз, когда я запускаю на нем операцию, она перезагружается из базы данных, перезаписывая предыдущие изменения. Э.Г.
@costs[i].monthly = 10
Есть ли способ обеспечить сохранение изменений в течение сеанса без сохранения в базе данных? В данный момент мне кажется, что лучше всего создать отдельную модель для хранения значений, а затем сохранить их обратно в исходное, когда пользователь завершит работу.