To split, or not to split, that's a question.


I'm working on a Rails application. Recently my client is asking for an admin portal, which should be able to manage ticket as the one for the original one, and have some admin specific features additionally. And their authentications are different, the user portal uses Devise, while the admin portal uses basic HTTP authentication. My intuition prefers to create a standalone Rails project for admin portal, but they do share something like model, and forms. I'm worrying that split the project would break DRY. Does anyone can give me some advices? Thanks.

Best regards, Zhi-Qiang Lei


maybe you could create a Rails Engine.

Take a loot at the Railscasts site

Best Regards,


Hey man, why your admin namespace is using http basic authentication? I think the best thing you can do is use devise with cancan to handle with authorization in your application.

And about the admin portal feature, you shows set every resource to a namespace called admin. Your routes will look like something like:

namespace :admin do

resources :tickets


So you should set up a controller inside the namespace admin:

Class Admin::TicketsController < Application Controller


Hope this helps you!


Because there is only on admin, and his account will not be in database, and he wants the ability to manage everything.

Thanks, I thought about that. But in this way Admin::TicketsController still cannot share some views of TicketsController well. And due to the name convention, when I use form builder with a ticket, it will use the ticket path without admin prefix defaultly.

Ok! I got it! no problem so on! You can just use devise + cancan and set some specific links in the view that will only shows up if the user is a admin or the other role.

What you thing about that?