设计不同的父类

时间:2015-07-06 02:42:48

标签: ruby-on-rails devise

我在我的rails应用程序中使用了devise,而且我在' /...'中有一个html版本;和api at' / api / v#/ ...'设计控制器的实现应该与' / sign_in'不同。和' / api / v1 / sign_in'此外,我有一个ApiController,api名称空间中的所有控制器都继承自。

基本上我在我的应用程序中需要两套不同的设计,每组都有不同的父类。

我能够在api命名空间中生成控制器,并将设计的父级更改为ApiController,但这使常规站点搞砸了。那不会起作用。

我可以为我的ApiController创建一个模块,然后将它包含在每个设备控制器中......但这看起来很臭。

在api中我只需要一些设计功能,所以也许我可以在没有设计的情况下实现它们。但是,我失去了确认功能和其他东西。

我该怎么办?

如果您想查看任何代码,请告诉我。

1 个答案:

答案 0 :(得分:0)

您可以指定路线中使用的控制器:

devise_for :users # uses the normal devise controllers

namespace :api do
  devise_for :users, controllers: { sessions: 'api/sessions' }
end  
class Api::SessionsController < Devise::SessionsController
end

这就是说 - 创建自己的控制器来处理带有Warden(Devise的低级组件)的API中的身份验证和会话非常简单,并且比使用设计基于令牌的auth或HMAC的设计更加清晰。