Можно ли манипулировать has_many только в памяти? - PullRequest
2 голосов
/ 06 марта 2011

Платформа: Рельсы 3

Требования:

Форма (businesses#edit), позволяющая пользователю отправить обновление в запись Business (businesses#update.). При отправке businesses#update не сохранит изменения в базе данных, а вместо этого отправит электронное письмо с новая информация для ручного просмотра.

Как это сделано:

Загрузите модель Business, обновите свойства в памяти, передайте ее в ActionMailer, завершите без сохранения модели.

Проблема:

Модель Business имеет has_many :business_categories :through :business_categories_businesses, то есть has_many :business_categories_businesses, и всякий раз, когда я манипулирую Business.business_categories (например, @business.business_categories = BusinessCategory.where(:id => params[:business][:business_categories])), изменения немедленно сохраняются в базе данных.

Я не могу найти какой-либо способ манипулирования этой коллекцией только в памяти, чтобы она могла быть передана в почтовую программу действий. В краткосрочной перспективе я собираюсь взломать его, не выполняя задание, и просто передать новую коллекцию BusinessCategories в ActionMailer для самостоятельной работы, но теперь это просто раздражает меня, и я полагаюсь на коллективную мудрость толпа:

Можно манипулировать отношениями has_many только в памяти, и если да, то как? Пожалуйста, сохраните мое здравомыслие.

Заранее спасибо!

...