ruby-on-rails - 只为特定的代码路径调用 after_action
问题描述
我有一个类似于下面代码的 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
解决方案
您可以通过条件为回调传递一个过程。
after_action :track_click, only: :external_click, if: -> { params[:url].present? }
推荐阅读
- javascript - 循环中的所有异步调用完成后如何调用函数?
- visual-studio-code - 在 VSCode 中,是否有从差异视图导航到本地文件的命令
- maven - 将 nexus 添加到 settings.xml 后无法找到存储库
- python - 将网页美化结果保存到 CSV 或 excel 文件中
- service-layer - 在服务层的实体中添加属性?
- python - 即使多处理任务未完成,Pandas to_csv 也会停止更新文件
- laravel - Laravel 8 Fortify 登录显示 429 太多请求
- flutter - 将文档中的值从数据库保存到 initState 值的颤振问题
- model - 如何在 Visio 形状数据中显示多行文本?
- ios - 防止 UIButton showsTouchWhenHighlighted 更改 VoiceOver 描述