2.2. Introducing
Photo Share
For the remainder of this site, we'll be working
on a single application called Photo Share, a database-backed web
application that allows users to share photos among acquaintances.
We'll start with these simple requirements, called user stories:
-
Let a user view a set of photos on the Web so
others can see them.
-
Organize photos in categories.
-
Organize and view slideshows from available
photos.
2.2.1. Defining
the Model
Rails is a
database-centric development environment, so your development will
usually begin with the model. You need to determine the types of
objects your application will need. A good starting point is to
underline the important nouns in a list of user stories. We've used
italic to signify important nouns, so we'll have Active Record
classes for photos, categories, and slideshows. We'll also need
slides, to keep track of the position of each photo in a
slideshow.
There are several important relationships:
-
A category has
many photos, and a photo can have one or more categories.
-
A category can
have other categories.
-
A slideshow has
many slides.
-
A slide has one
photo.
A simple diagram like the one in Figure 2-1 helps to
show the entities and relationships in your model. Index cards work
well. For many-to-one relationships, we'll use an arrow to mean
belongs to, so the arrow will
point from the one to the many. Two-sided arrows are many-to-many, and a line without arrows means
one-to-one. We'll represent a tree
with an arrow that points back to the originating class. We'll use
Active Record to define each of these entities and manage each
relationship. Now, let's code them in Active Record.
2.2.2. Configuring
Active Record
As always, we start with a Rails project. First,
create a Rails project called photos:
rails photos
cd photos
You've now got a Rails project called
photos with three environments: development, test, and
production. Rails uses separate databases for each environment (see
the sidebar "
"rubyrails-chp-2-sect-3.html#rubyrails-chp-2-sidebar-1">Three
Databases"). To create a database, make sure the MySQL database is started and also start the
mysql command prompt:
mysql -u <username> -p <password>
Now create a database called
photos_development:
> mysql
...
mysql> create database photos_development;
Query OK, 1 row affected (0.05 sec)
Configure your database. This chapter uses a
development database, so you need to edit database.yml to look like this:
development:
adapter: mysql
database: photos_development
username: <your userid>
password: <your password>
host: localhost
|