【发布时间】:2015-11-18 07:44:05
【问题描述】:
我的DailyOrdersController 中有一个名为update 的方法:
def update
if @daily_order.update( daily_order_params.merge({default_order:false}) )
respond_or_redirect(@daily_order)
else
render :edit
end
end
我的DailyOrder 模特:
before_save :refresh_total
def refresh_total
# i do something here
end
我现在要做的是,如果更新请求来自 current_admin,我希望跳过 refresh_total 回调。
我有 2 个使用 Devise gem 生成的用户模型:
- 用户(拥有
current_user) - 管理员(有
current_admin)
我试着把它变成这样:
def update
if current_admin
DailyOrder.skip_callback :update, :before, :refresh_total
end
if @daily_order.update( daily_order_params.merge({default_order:false}) )
respond_or_redirect(@daily_order)
else
render :edit
end
end
但如果更新请求来自current_admin(当登录用户是管理员用户时),它仍然无法正常工作并继续调用refresh_total 回调。
我现在该怎么办?
【问题讨论】:
标签: ruby-on-rails ruby ruby-on-rails-4 devise rails-activerecord