I’m about to build my first Ruby on Rails application (and first anything beyond xhtml and css), and I’m looking for some helpful feedback on my model structure.
I’ve included a mockup to help visual the application.
The only models I’m sure I need so far are:
1. a movie model (to serve as the main model, named movie so URL’s will look like, ‘sitename.com/movies/1-Willy-Wonka’) and
2. a user model
Other than those, I don’t know what to make the others; like ‘filming locations’, ‘actors’, and most importantly, the attributes like ‘willy wonka’ and ‘johnny depp’.
Should I make all of those models, even the attributes? If so, is it possible, and recommended, to let people create models as attributes?
I try to see the app as data created by forms and stored in databases, and with that pov I can’t decide how to connect attributes (character <=> actor) to sections (actors, filming locations, artwork, etc.) inside a movie listing; while allowing the attributes themselves to be hyperlinks to related attributes/movies/even sections: clicking on ‘steven speilberg’ would bring you to a page with movies he’s acted in, films he’s directed, produced, written, etc.
Thoughts?
I would recommend getting your data model clear first. You can then start with one rails model per database table. This is not always the case, but it’s a reasonable place to start.
Let’s focus on the movies and actors:
Some assumptions:
You might then model your relationships like this:
Normally, you can rely on Rails’ magic to handle the join model without creating one yourself. In this case we want to store the character information as attributes of the join model, so we create it explicitly.