Rails:从ApiController中分离ApplicationController

时间:2014-07-18 08:04:22

标签: ruby-on-rails ruby-on-rails-4

我的app/文件夹看起来像这样

.
├── controllers
|   └── api
|       └── v1
|           ├── card_controller.rb
|           └── user_controller.rb
|   └── website
|       └── account_controller.rb
...

我希望website文件夹中的控制器继承WebsiteControllerapi文件夹中的控制器继承ApiController。怎么能实现这一目标?具体来说,需要创建哪些文件,以及必须使用哪些类定义?

1 个答案:

答案 0 :(得分:1)

我建议在controllers/website/website_controller.rbcontrollers/api/v1/api_controller.rb中创建可继承的类。

您可以使用以下内容轻松继承这些新控制器。这与默认生成的Rails应用程序的每个控制器继承自ApplicationController的方式类似。

文件

website_controller.rb

class WebsiteController < ApplicationController
end 

account_controller.rb

class AccountController < WebsiteController
end

替代

  • 可能有元编程继承或包含这些目录中的文件,但我建议不要让它使代码更具可读性。
  • 如果你的可继承类只是解决了一个特定的问题,或者有其他辅助功能,而不是其他的,你应该分别使用问题或帮助。
  • 如果您只需要此级别来继承您的API和应用程序的其余部分,最好将您的API解压缩到一个单独的应用程序(可能是也可能不是Rails应用程序)。