Я знаю, что для объектов ActiveRecord в Rails 3 предоставляется обратный вызов after_commit
. Однако я хотел бы получить доступ к этой функциональности в контроллере Rails.
Намерение сделать что-то подобное в контроллере:
rescue_from AccountError, :with => :render_internal_error
after_commit :render_created, :on => :create
def create
Account.transaction do
modify_underlying_system
@account.save!
end
end
protected
def render_created
render :status => 201, :json => {...}
end
def render_internal_error
render :status => 500, :json => {...}
end
Есть ли способ, которым я мог бы достичь этого? Я не хочу использовать обратный вызов ActiveRecord after_commit
, потому что это будет означать нарушение разделения между моделью и контроллером, когда модель выполняет рендеринг, чего не следует делать.