約 60 以上のアクションを持つ Rails コントローラーがあります。約 20 個のアクションで POST リクエストのみを許可し、残りのアクションではすべてのリクエスト メソッドを許可するように変更する必要があります。
すべてのルートに許可されているルートを手動で指定する必要がないように、これを行う方法はありますか?
これは私がこれまでに持っているものです(そして動作します):
post_regex = /first_route|second_route/
all_routes_regex = /third_route|fourth_route/
map.connect '/myroute/:id/:action', :controller => 'my_controller', :constraints => {:action => post_regex }, :conditions => { :method => :post }
map.connect '/myroute/:id/:action', :controller => 'my_controller', :constraints => {:action => all_routes_regex }
このようなものを作成しようとしましたが、RoutingError が発生するだけです。
post_regex = /first_route|second_route/
class AllRoutesConstraint
def self.matches?(request)
(request.query_parameters[:action] !~ post_regex)
end
end
map.connect '/myroute/:id/:action', :controller => 'my_controller', :constraints => {:action => post_regex }, :conditions => { :method => :post }
map.connect '/myroute/:id/:action', :controller => 'my_controller', :constraints => {:action => AllRoutesConstraint }