Active Record Data Modeling
Upcoming SlideShare
Loading in...5
×
 

Active Record Data Modeling

on

  • 239 views

 

Statistics

Views

Total Views
239
Views on SlideShare
239
Embed Views
0

Actions

Likes
0
Downloads
1
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Active Record Data Modeling Active Record Data Modeling Presentation Transcript

  • Data Modeling WITH ACTIVE RECORD IN RAILS
  • About Me: Hannah Howard Twitter: @techgirlwonder Email: hannah@techgirlwonder.com I run my own computer services business called Tech Girl Wonder.And I’m hiring. I do ruby programming with Logical Reality Design, a Rails development shop. Hire us!
  • • This is my take on the subject, not the one true way. • For the smarty pants in the room, I’m skipping over a lot. Possibly even saying things that aren’t always true. • There will be time for questions. • This is not a lecture, only the first 15-30 minutes are. A Few CAVEATS
  • Why This Talk? • I think I’ve noticed some patterns in where new people get stuck learning Rails • I think it has to do with the parts of Rails that are closer to traditional computer programming and very different from HTML/CSS • Specifically, I think people get stuck on the ‘M’ in the MVC, i.e ActiveRecord and its connection to an SQL database.
  • STATIC WebSites VS Web Applications Web Applications Web Applications
  • Static Web Sites Server Give me a page! Here’s a page! Client Static web page: is delivered to the user exactly as stored.
  • Web APPLICATION Informatio n Presented To The User Data Retrieved From The Model Model Of Data Represent ed by App List of changes sent to the model Interface For Receiving Input ServerClient View Controller Gives Input Sees Results
  • WHAT IS THE MODEL? • A model of data represented by the application • Rails stores its data in a relational database. (usually) • You access data in relational databases with SQL queries • SQL queries are complex and hard to write • ActiveRecord is there to make that easier and “better”
  • What is A RELATIONAL DATABASE? • A series of data tables (like Excel spreadsheets) that are connected to each other through relationships • Hint: Spend some time with Filemaker or Access
  • RelationAL Database Example Id Weight Stale 1 6oz TRUE 2 8oz FALSE 3 5oz FALSE Id Name Country 1 Swiss Switzerland 2 American U.S. 3 Harvarty Denmark Id Name Address 1 Cheesetopia 123 Fake St. 2 I Love Cheese 8675 Threeonine Ave. 3 Bob’s Cheeses 1 Infinite Loop Cheese Types Cheeses Cheese Shops Id Weight Stale TypeID ShopID 1 6oz TRUE 1 2 2 8oz FALSE 3 3 3 5oz FALSE 2 1 Have Many Have Many Have Many Have Many Belongs To Belongs To TypeID ShopID 3 2 1 2 2 1 1 1 3 3 2 3
  • SQL: Standard Query Lanaguage SELECT * FROM CHEESES INNER JOIN CHEESE_TYPES ON cheeses.cheese_type_id = cheese_types.id WHERE cheese_types.name IN [“SWISS”,“HARVARTI”] WHERE cheeses.stale = FALSE
  • AcTIVERECORD Cheese Types class CheeseType < ActiveRecord::Base has_many :cheeses has_and_belongs_to_many :cheese_stores attr_accessible :name, :country end Cheeses class Cheese < ActiveRecord::Base belongs_to :cheese_type belongs_to :cheese_store attr_accessible :weight, :stale end Cheese Stores class CheeseStore < ActiveRecord::Base has_many :cheeses has_and_belongs_to_many :cheese_types attr_accessible :name, :address
  • WoRKING WITH ACTIVE RECORD cheese_type.country = “France” cheese.cheese_store cheese_store.cheese_types Cheese.where(:weight => 4.0..10.0) Cheese.joins(:cheese_types).where(cheese_types: {name: [“SWISS”,“HAVARTI”]}).where(:stale => false)
  • The KEY PIECE OF GLUE: Migrationsrails generate model cheeses weight:decimal stale:boolean cheese_type_id:integer cheese_store_id:integer class CreateCheeses < ActiveRecord::Migration def change create_table :cheeses do |t| t.decimal :weight t.boolean :stale t.integer :cheese_type_id t.integer :cheese_store_id t.timestamps end end end Oh wait, so that’s what rake db:migrate does!
  • Are You READY TO START PROGRAMMING?
  • rb-tunes Our Project: iTunes
  • Lets Start Making It! Tracks Albums Artists Playlists