1

約 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 }
4

1 に答える 1