Hello there fellow devs.
I’ve just decided to start with my first real-world app on Rails 3.2. I’m a newbie so go easy on me :P. Let me describe my app idea.
The app is a “Daily Offers” site, where visitors will be able to watch all the new offers that the “Vendors” will submit. Now the important part - the “Vendors”. ‘Vendors’ are in other words the people who paid to signup for my app and will be able to submit their ‘Offers’.
Here comes my first issue: implementing the admin control panel: I want to give these ‘Vendors’ a separate admin panel, where they will login and they’ll be able to manage their offers, see their stats and more. I know it’s easier to implement front-end administration but the way I thought it, in my case it feets better to have totally different views for administrating.
Now, after a search, I thought that using namespaced controllers and views would be a good idea (ex. Admin::MainPagesController etc). Isn’t it? And then I’ll implement my authentication system (don’t want to use any gems cause I want to practice and learn Rails) to restrict admins the ability to view-manage only their offers and not the offers of other admins. Do you have any other suggestions on this issue? Is there another way to do it other than namespacing the controllers and views?
Second issue - routing: I believe how will I route depends on the urls I want to have, right? So I have 2 resources in my app, :vendors and :offers. I decided to nest the offers resource inside vendors cause that’s the more natural way, an offer makes sense to be always precedenced by it’s vendor, isn’t it?
- I want to have URLs like example.com/v/ instead of example.com/vendors/. So I did it like this, seems to be working but I don’t know if it’s a good practice or not: https://gist.github.com/1949898
- If later I want to add subdomains like .example.com (which would match to example.com/v/), could this be done easily with the current routing I’m doing?
- Is this considered RESTful approach? I really want to do it the best way.
Thanks in advance.