I am trying to make my first application using REST and I am trying to
embrace the CRUD!
However I am coming accross some difficulties.
In my database I have a table called “contents” and this has a
content_type field. So this way I can recognise if it is a blog,
article, event etc. They all share the same structure, so there is not
need to make three tabels.
I first thought that I would need to create three controllers
(articles_controller, blogs_controller and events_controller) to only
use REST/CRUD. However I cannot do this because of the route
defination of map.resources :content
What is the best way to do this using REST ? Have one controller named
content and just check the content_type in the params ? If that is the
case then how would I pass this param value in the url and configure
routes to work nicely ?
Thanks in advance.
I have managed to come up with a solution to this problem. However I
am not sure if it is the best way of doing it. Any Help will be
I have made three models. All of the models inherit from the Content
model. So I have this :
class Event < Content
class Article < Content
class Blog < Content
So now with these models I can do this in routes :
map.resources :blogs, :article, :events
I then have three controllers :
So now my application can be CRUD compliant, and it does not require
you to pass a content_type as a parameter.
Is this the best way of doing this ? It seems to me that there is lot
of repitation of code in the controllers. The only real difference
will be a condition of content_type=x
Would it be better in routes to just do this :
map.resource :blogs, :controller=>“content”
map.resource :article, :controller=>“content”
map.resource :events, :controller=>“content”
And then in the content controller somehow look at the url to see where
it is coming from ? How would one do that ?
Thank you in advance.