Skip to content

Instantly share code, notes, and snippets.

@camallen
Created October 3, 2014 11:22
Show Gist options
  • Select an option

  • Save camallen/a15e61b06f90b6511e8b to your computer and use it in GitHub Desktop.

Select an option

Save camallen/a15e61b06f90b6511e8b to your computer and use it in GitHub Desktop.
Example refactored routes
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