В настоящее время я разрабатываю несколько модулей для повторного использования кода из моих контроллеров на Rails 3 с использованием приложения InheritedResources (последняя версия).
Моя идея состоит в том, чтобы иметь некоторое поведение, которое должно быть запущено после успешного создания или обновления ресурса, но, кроме повторного выделения действий «создать» или «обновить», я не уверен, какзаймемся этим.
В настоящее время я использую что-то вроде
module SessionStorable
extend ActiveSupport::Concern
include Base
included do
before_filter :setup_resource, :only => :new
after_filter :reset_session_resource_id, :only => [:create, :update]
end
# ....
end
У меня есть особая настройка ресурса, которую я использую, которая, помимо прочего, добавляет идентификатор ресурса в сеанс.После того, как ресурс успешно сохранен в BD, я хотел бы удалить его идентификатор из сеанса, и именно это делает after_filter.
До сих пор я занимался этим, также сохраняя информацию updated_at в сеансе и сравнивая, обновилась ли модель (если это так, она должна была быть успешной) и запустила метод.
Тем не менее, я не доволен этим (что-то вроде хакерства), а также я планирую иметь другие модули, которые будут работать с ресурсами и после того, как они были обновлены и не захотят использовать один и тот же подход дважды,
Есть ли ловушка на ИК, которую я должен использовать?Или какие-нибудь другие идеи о том, как поступить?