2016-09-27 5 views
0

(Ruby 2.3.1, Rails 5.0.0.1)Rails API с версиями: версия в хелперов имена

Я уже реализовал API управления версиями в URI и добавил изобрести токен аутентификации, как это:

constraints subdomain: 'api' do 
    scope module: 'api' do 
     namespace :v1 do 
      # V1 stuff 
      resources :users 
      mount_devise_token_auth_for 'User', at: 'auth' 
     end 
    end 
end 

в результате «реки маршрутов» (пример строка), следовательно, является:

v1_user GET /v1/users/:id(.:format) api/v1/users#show {:subdomain=>"api"} 

в настоящее время в моем контроллере, любой помощник, связанный с пользователем содержит «v1» версии. Например:

before_action :authenticate_v1_user! 

Я новичок в этой концепции, но разве этого нельзя избежать? Если я когда-нибудь перейду на v2, мне придется пройти через все эти помощники и убедиться, что я изменю его, чтобы он не сломался? Или как будет выглядеть процесс обновления?

Благодарим Вас за отзыв! Это может быть очень простой вопрос, но я немного смущен.

+0

Я бы избежать использования версий в именах, пока у вас не будет, по крайней мере, 2 разных версии ... так что просто назовите его 'authenticate_user!', пока у вас не будет двух разных способов аутентификации, тогда вы можете иметь 'authenticate_v1_user' vs' authenticate_v2_user', чтобы различать ... хотя tbh I ' d обрабатывать разные способы делать вещи, используя «роли» вместо этого (по-прежнему сохраняйте v1 и т. д. в маршрутах). –

ответ

0

Хорошо, я продолжал искать немного и нашел решение, которое работает (даже если он чувствует себя немного слишком «Hacky» на мой вкус):

namespace :v1, as: '' do 
    # V1 stuff 
    resources :users 
    mount_devise_token_auth_for 'User', at: 'auth' 
end 

Так as: '' делает трюк. (Ответы взяты из: Adding prefix to a named route helper under namespace)

Если я когда-либо хочу «v1» назад в мои помощниках имен, я думаю, я мог бы вручную добавить их в маршрут с, например: as: 'new_v1_user_sesssion'