2.2. Introducing Photo ShareFor the remainder of this book, 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 :
2.2.1. Defining the ModelRails 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 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. Figure 2-1. Photos are placed into nested categories and listed in slideshows2.2.2. Configuring Active RecordAs 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 "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 |