Skip to content

Abstract common routing resource concerns to cut down on duplication.

License

Notifications You must be signed in to change notification settings

Tei/routing_concerns

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Routing Concerns

Abstract common routing resource concerns to cut down on duplication.

Code before:

BCX::Application.routes.draw do
  resources :calendar_events do
    get :past, on: :collection
    resources :comments
  end

  resources :messages  { resources :comments }
  resources :forwards  { resources :comments }
  resources :uploads   { resources :comments }
  resources :documents { resources :comments }
  resources :todos     { resources :comments }
  
  resources :projects, defaults: { bucket_type: 'project' } do
    post :trash, :restore, on: :member
  
    resources :messages, except: [ :new ] do
      post :trash, :restore, on: :member
      resources :image_attachments, only: :index
    end
  
    resources :forwards do
      member do
        get  :content
        post :trash, :restore
      end
  
      resources :image_attachments, only: :index
    end
  
    resources :uploads do
      post :trash, :restore, on: :member
      resources :image_attachments, only: :index
    end
  
    resources :todolists do
      get :more, :completed, on: :collection
      post :trash, :restore, on: :member
    end
  
    resources :todos do
      post :toggle, :trash, :restore, on: :member
    end
  
    resources :comments do
      post :trash, on: :member
      resources :image_attachments, only: :index
    end
  end
end

Code after:

BCX::Application.routes.draw do
  concern :commentable do
    resources :comments
  end
  
  concern :trashable do
    post :trash, :restore, on: :member
  end

  concern :image_attachable do
    resources :image_attachments, only: :index
  end

  resources :calendar_events, concerns: :commentable do
    get :past, on: :collection
  end

  resources :messages, :forwards, :uploads, :documents, :todos, concerns: :commentable

  resources :projects, concerns: :trashable, defaults: { bucket_type: 'project' } do
    resources :messages, :uploads, :comments, concerns: [:trashable, :image_attachable]
  
    resources :forwards, concerns: [:trashable, :image_attachable] do
      get :content, on: :member
    end
  
    resources :todolists, concerns: :trashable do
      get :more, :completed, on: :collection
    end
  
    resources :todos, concerns: :trashable do
      post :toggle, on: :member
    end
  end
end

Compatibility

This plugin was designed as a proof-of-concept for a feature that's destined for Rails 4. It has only been tested on Rails 3.2+, but may work on earlier versions as well.

About

Abstract common routing resource concerns to cut down on duplication.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published