Платформа: Рельсы 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 только в памяти, и если да, то как? Пожалуйста, сохраните мое здравомыслие.
Заранее спасибо!