Rails 3のActiveRecordオブジェクトにコールバックが提供されていることは知ってい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
のは、モデルにレンダリングを実行させることでモデルとコントローラーの分離を破ることを意味するためです。これは、実行すべきではないことです。