Rails 5.1路由:动态:动作参数

Boo*_*age 15 ruby-on-rails-5

Rails 5.0.0.beta4在包含dynamic:action和:controller segments的路由上引入了弃用警告:

DEPRECATION WARNING: Using a dynamic :action segment in a route is deprecated and will be removed in Rails 5.1. 
Run Code Online (Sandbox Code Playgroud)

来自此PR的提交消息指出:

允许:controller和:通过config/routes.rb中的路径指定的操作值一直是Rails中导致安全性发布的许多问题的根本原因.鉴于此,最好将控制器和操作明确列入白名单,而不是试图将"坏"值列入黑名单或消毒.

你会如何将一组动作参数"列入白名单"?我的路由文件中有以下内容,它们提出了弃用警告:

namespace :integrations do
  get 'stripe(/:action)', controller: 'stripe', as: "stripe"
  post 'stripe/deactivate', controller: 'stripe', action: 'deactivate'
end
Run Code Online (Sandbox Code Playgroud)

Boo*_*age 21

虽然它有点麻烦,但最好的方法似乎是明确定义路线:

namespace :integrations do
  namespace 'stripe' do
    %w(auth webhook activate).each do |action|
      get action, action: action
    end
  end
  post 'stripe/deactivate', controller: 'stripe', action: 'deactivate'
end
Run Code Online (Sandbox Code Playgroud)