【发布时间】:2021-10-07 18:39:37
【问题描述】:
Rails 路由默认按照 REST 创建 7 个 CRUD 操作。
resources :users
但是,我在几乎所有资源中都使用了confirm_destroy 操作,因为我在确认页面上有很多逻辑;这不仅仅是一个简单的是/否警报对话框。
resources :users do
get :confirm_destroy, on: :member
end
对于 50 多个资源,为每个资源写出这些内容变得很乏味,因此我的路由文件实际上要长 3 倍。
有没有办法为resources 块添加一个动作到标准 7 中,这样
resources :users
将与
相同resources :users do
get :confirm_destroy, on: :member
end
我可以在路线中使用它作为标准动作,即:
resources :users, only: [:show, :confirm_destroy, :destroy]
resources :users, except: [:confirm_destroy]
【问题讨论】:
-
看看创建路由问题...guides.rubyonrails.org/routing.html#routing-concerns...might 让您接近。否则我想你会进入猴子补丁的领域。
-
我检查了源代码并同意@dbugger。没有很好的钩子可以改变
resources的行为。猴子修补始终是一种选择,但很脆弱。顾虑是个好主意。另一种选择是创建自己的方法来调用resources+ 你的 confirm_destroy 操作
标签: ruby-on-rails rest routes