I’m trying to figure out how to merge the utility of namespaces with
user roles. For example, I have a very simple system of buyers and
sellers and a user is either part of a buyer account or a seller
account (not both!). I am trying to figure out if I can define routes
that are top-level identical but based upon the user’s account type,
maps to a namespace.
For example, imagine I have a ProductsController class for Buyers and
a ProductsController class for Sellers. I’m doing this because there
is enough difference in what a Buyer would do and a Seller would do,
as opposed to a single class that does some user-role-type logic.
So, I have “app/controllers/buyers/products_controller.rb” and “app/
controllers/sellers/products_controller.rb”. In a normal namespaced-
defined route, I’d typically have:
map.namespace :buyers do |buyers|
buyers.resources :products
end
and
map.namespace :sellers do |sellers|
sellers.resources :products
end
So I get routes like: ‘/buyers/products/’ => :index action on
products_controller in the buyers namespace.
But, what I’d REALLY love is something like:
‘/products’ => calls ‘index’ action but on the products_controller as
defined by the logged in user’s account type (buyer or seller). And,
of course, then I’d need some way to handle the case where the user
tries the URL but hasn’t logged in, perhaps even just a redirect to a
login controller.
Anyway, does this make sense? Is this even possible? Can someone help
me with this or with a different way to think about it.
I know I can just do the normal namespacing, but the URLs would be so
much neater, in my case, if I could ditch the prefix in the URLs.
TIA!
-Danimal