如何在不同的命名空间Rails 4.2中遵循DRY原则?

基本上我开发了一个有两个命名空间的应用程序: adminapi和public(只是resources :users例如resources :users )。 一切正常,但我正在重复自己,因为api一些控制器可以很容易地用于admin

在这种情况下如何保留命名空间?

谢谢!

我可以通过几种方式来考虑这样做:

  1. (不推荐) – 将URL发送到routes.rb文件中的同一个控制器。

  2. 控制器inheritance的共享命名空间

例如,您可以:

 # controllers/shared/users_controller.rb class Shared::UsersController < ApplicationController def index @users = User.all end end # controllers/api/users_controller.rb class Api::UsersController < Shared::UsersController end # controllers/admin/users_controller.rb class Admin::UsersController < Shared::UsersController end 

以上内容允许您跨相关控制器共享索引操作。 在这种情况下,您的路由文件将如下所示:

 # config/routes.rb namespace :api do resources :users end namespace :admin do resources :users end 

这肯定是共享一个动作的很多代码,但是这个值会随着共享动作的数量而增加,最重要的是,你的代码位于一个位置。