我知道after_commit
Rails 3 中为 ActiveRecord 对象提供了回调。但是,我想在 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
有什么办法可以做到这一点吗?我不想使用 ActiveRecordafter_commit
回调,因为这意味着通过让模型进行渲染来打破模型和控制器之间的分离,这是它不应该做的事情。