Contents 

Ruby on Rails: Up and Running
Table of Contents
Copyright
Preface
Chapter 1. Zero to Sixty: Introducing Rails
Section 1.1. Rails Strengths
Section 1.2. Putting Rails into Action
Section 1.3. Organization
Section 1.4. The Web Server
Section 1.5. Creating a Controller
Section 1.6. Building a View
Section 1.7. Tying the Controller to the View
Section 1.8. Under the Hood
Section 1.9. What's Next?
Chapter 2. Active Record Basics
Section 2.1. Active Record Basics
Section 2.2. Introducing Photo Share
Section 2.3. Schema Migrations
Section 2.4. Basic Active Record Classes
Section 2.5. Attributes
Section 2.6. Complex Classes
Section 2.7. Behavior
Section 2.8. Moving Forward
Chapter 3. Active Record Relationships
Section 3.1. belongs_to
Section 3.2. has_many
Section 3.3. has_one
Section 3.4. What You Haven't Seen
Section 3.5. Looking Ahead
Chapter 4. Scaffolding
Section 4.1. Using the Scaffold Method
Section 4.2. Replacing Scaffolding
Section 4.3. Generating Scaffolding Code
Section 4.4. Moving Forward
Chapter 5. Extending Views
Section 5.1. The Big Picture
Section 5.2. Seeing Real Photos
Section 5.3. View Templates
Section 5.4. Setting the Default Root
Section 5.5. Stylesheets
Section 5.6. Hierarchical Categories
Section 5.7. Styling the Slideshows
Chapter 6. Ajax
Section 6.1. How Rails Implements Ajax
Section 6.2. Playing a Slideshow
Section 6.3. Using Drag-and-Drop to Reorder Slides
Section 6.4. Drag and Drop Everything (Almost Everything)
Section 6.5. Filtering by Category
Chapter 7. Testing
Section 7.1. Background
Section 7.2. Ruby's Test::Unit
Section 7.3. Testing in Rails
Section 7.4. Wrapping Up
Appendix A. Installing Rails
Section 1.1. Windows
Section 2.1. OS X
Section 3.1. Linux
Appendix B. Quick Reference
Section 5.1. General
Section 5.2. Testing
Section 5.3. RJS (Ruby JavaScript)
Section 5.4. Active Record
Section 5.5. Controllers
Section 5.6. Views
Section 5.7. Ajax
Section 5.8. Configuring Your Application
About the Authors
Colophon
Index
A
B
C
D
E
F
G
H
I
J
L
M
N
O
P
R
S
T
U
V
W
X
Y
Z

Ruby on Rails for all.

Prev Page Next Page
Previous Page
Next Page

2.4. Basic Active Record Classes

Whether you use migrations or SQL scripts, you'll need to follow the naming conventions. The table name photos and the definition of the id column are both significant. (With our migration, Rails created the id column automatically.) Rails uses several naming conventions:



Class and table names

If the name of your database tables is the English plural of the name of your model class, Rails can usually infer the name of the database table from the name of the Active Record class. (Active Record will have trouble with some irregulars like sheep, but supports many popular irregulars like people.)



Identifiers

Similarly, Active Record automatically finds a column called id and uses it as a unique identifier. The id column should be an integer type, and the column should be populated by the database. In this case, we'll use an auto-increment sequence. Staying with these conventions saves you some configuration, and also makes your code much easier to understand.



Foreign keys

Foreign keys should be named <class>_id. For example, our slides table will have a foreign key named photo_id.



Capitalization

When you're defining a class, capitalize the first letter of each word and omit spaces between words (commonly called camel casing). But Rails methods, database table names, columns, attributes, and symbols use underscores to separate words. These conventions are mostly cosmetic, but Rails often uses symbols to refer to a class name, so make sure you follow these conventions. For example, to represent a class called ChunkyBacon, you'd use the symbol :chunky_bacon.

2.4.1. Wrapping the Table

Now we're ready to look at the Active Record model class we created earlier. In the app/models directory (which contains your project's model classes), Rails created the photo.rb file, along with some testing code, when we generated our model. Open it:

class Photo < ActiveRecord::Base
end

Active Record class has all of the information that it needs to wrap the photos table.

2.4.2. The Rails Console

You'll probably spend a good deal of time in the Rails console, one of the many tools created with each Rails project. The Rails console lets you interactively work with your database-backed models. When you start a console, Rails does the following:

  • Connects you to the database

  • Loads the Active Record classes in app/model

  • Lets you interactively work with your model, including database operations

Let's start a console now to manipulate the Photo model we created:

ruby script/console

We'll use the console to create some new objects, and save them to the database:[*]

[*] After each statement you type, the console will print the value of object.inspect for the last object returned.

>> photo=Photo.new
=> #<Photo:0x35301d8 @attributes 
={"filename"=>""},
@new_record=true>
>> photo.filename = 'cat.jpg'
=> "cat.jpg"
>> photo.save
=> true

The new method on Active Record classes can take a code block:

>> Photo.new do |dog|
?>   dog.filename = 'dog.jpg'
>>   dog.save
>> end

Both techniques create a new model object and save it to the database. Each produces the same SQL, so the choice is entirely a matter of your personal preference.


Previous Page
Next Page