限制所有的restful路由,而不重复每个资源声明

时间:2014-12-13 07:18:58

标签: ruby-on-rails ruby-on-rails-4 routes rails-routing

我正在开发一个Rails API(Rails 4.2.0.beta4),反过来由于客户端将负责生成新的和编辑表单,我的RESTful控制器只需要5个动作。而不是必须做这样的事情:

resources :media, except: [:new, :edit]
resources :media_collections, except: [:new, :edit]
etc...

我是否可以通过某种方式在一个区域内定义except: [:new, :edit]块中的所有资源?看起来很疯狂,不得不将其附加到资源声明中,对吗?

1 个答案:

答案 0 :(得分:1)

您可以创建一个抽象的方法。我会为此创建一个新模块,并使用extend使routes中的方法可用.rb

module ApiResource
  def api_resources(name, options = {}, &block)
    resources name, options.merge({:except => [:new, :edit]}, &block)
  end
end

# in routes.rb:

MyApp::Application.routes.draw do
  extend ApiResource

  api_resources :media
  api_resources :media_collections

  # ...

end