Created
October 3, 2014 11:22
-
-
Save camallen/a15e61b06f90b6511e8b to your computer and use it in GitHub Desktop.
Example refactored routes
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| def post_link_relation(resource, constraint) | |
| post "/links/:link_relation", | |
| to: "#{resource}#update_links", | |
| constraints: { link_relation: constraint }, | |
| format: false | |
| end | |
| def delete_link_relation(resource, constraint) | |
| delete "/links/:link_relation/:link_ids", | |
| to: "#{resource}#destroy_links", | |
| constraints: { link_relation: constraint }, | |
| format: false | |
| end | |
| def default_except | |
| [:new, :edit] | |
| end | |
| def resources_to_route | |
| [ | |
| [ :users, /user_groups/, [:new, :edit, :create] ], | |
| [ :groups, /users/, default_except ], | |
| [ :projects, /(subject_sets|workflows)/, default_except ], | |
| [ :workflows, /subject_sets/, default_except ], | |
| [ :subject_sets, /(workflows|subjects)/, default_except ], | |
| [ :collections, /subjects/, default_except ], | |
| [ :subject_queues, /set_member_subjects/, default_except ] | |
| ] | |
| end | |
| Rails.application.routes.draw do | |
| use_doorkeeper do | |
| controllers authorizations: 'authorizations', | |
| tokens: 'tokens' | |
| end | |
| devise_for :users, controllers: { omniauth_callbacks: 'omniauth_callbacks', passwords: 'passwords' }, skip: [ :sessions, :registrations ] | |
| as :user do | |
| get "/users/sign_in" => "sessions#new", as: :new_user_session | |
| post "/users/sign_in" => "sessions#create", as: :user_session | |
| delete "/users/sign_out" => "sessions#destroy", as: :destroy_user_session | |
| get "/users/sign_up" => "registrations#new", as: :new_user_registration | |
| post "/users" => "registrations#create", as: :user_registration | |
| end | |
| namespace :api do | |
| api_version(:module => "V1", :header => {name: "Accept", :value => "application/vnd.api+json; version=1"}) do | |
| get "/me", to: 'users#me', format: false | |
| resources :classifications, except: default_except, format: false | |
| resources :memberships, except: default_except, format: false | |
| resources :subjects, except: default_except, format: false | |
| resources_to_route.each do |route_params| | |
| resource, constraint, except = route_params | |
| resources resource, except: except, format: false do | |
| link_params = [ resource, constraint ] | |
| post_link_relation(*link_params) | |
| delete_link_relation(*link_params) | |
| end | |
| end | |
| end | |
| end | |
| root to: "home#index" | |
| match "*path", to: "application#unknown_route", via: :all | |
| end |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment