仅针对特定代码路径调用after_action

时间:2018-12-21 20:00:30

标签: ruby-on-rails model-view-controller

我有一个看起来像下面代码的Rails控制器。在external_click方法之后触发after_action。但是我最近添加了另一个代码路径,以防引用程序无效,现在我看到我不希望为该路径触发after_action。有没有一种方法可以防止在else子句中触发after_action。

class ClicksController < ApplicationController
  after_action :track_click, only: :external_click

  def external_click
    if params[:url].present?
      if valid_referer?(request.referer)
        redirect_to processed_url
      else
        redirect_to product_show_path(Product.find(params[:product_id]))
      end
    else
      not_found
    end
  end

1 个答案:

答案 0 :(得分:2)

您可以通过条件将回调传递给proc。

after_action :track_click, only: :external_click, if: -> { params[:url].present? }