2016-09-27 41 views
0

(红宝石2.3.1,Rails的5.0.0.1)导轨和版本API:版本帮手名

我已经在URI中实现的API版本,并加入设计令牌身份验证是这样的:

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

我会避免使用版本直到你至少有两个不同的版本...所以只要把它称为'authenticate_user!',直到你有两种不同的认证方式,那么你可以有'authenticate_v1_user'和'authenticate_v2_user'来区分...虽然tbh我' d使用'roles'处理不同的处理方式(仍然保持v1等)。 –

回答

0

好了,我已经把搜索了一下,发现一个解决方案,它的工作原理(即使它感觉有点太“哈克”对我的口味):

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'