ActiveRecord
Upcoming SlideShare
Loading in...5
×

Like this? Share it with your network

Share

ActiveRecord

  • 1,052 views
Uploaded on

An overview of ActiveRecord (Rails 3)

An overview of ActiveRecord (Rails 3)

More in: Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
1,052
On Slideshare
1,052
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
10
Comments
0
Likes
0

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n

Transcript

  • 1. ACTIVERECORD Rails 3
  • 2. MVC
  • 3. MODEL CLASSin app/models/person.rbclass Message < ActiveRecord::Baseend
  • 4. EVERY MODEL HASA CORRESPONDING DATABASE TABLE
  • 5. MVC
  • 6. HOW DID WE GETA DATABASE TABLE?
  • 7. RUBY-DRIVEN SCHEMA• scaffold generates db/migrate/20110131021702_create_people.rb• rake db:migrate runs the migration, creates the table• Watch what we did before in slow motion...
  • 8. DEMO
  • 9. RAILS CONSOLE>> ActiveRecord::Base.logger = Logger.new(STDOUT)
  • 10. RAILS CONSOLE>> ActiveRecord::Base.logger = Logger.new(STDOUT)>> Person.first SQL (1.0ms) SELECT nameFROM sqlite_masterWHERE type = table AND NOT name = sqlite_sequence Person Load (1.0ms) SELECT "people".* FROM "people" LIMIT 1=> #<Person id: 2, first_name: "Wilma", last_name: "Flinstone", created_at: "2010-10-19 19:59:36", updated_at: "2010-10-19 19:59:36">
  • 11. RAILS CONSOLE>> ActiveRecord::Base.logger = Logger.new(STDOUT)>> Person.first SQL (1.0ms) SELECT nameFROM sqlite_masterWHERE type = table AND NOT name = sqlite_sequence Person Load (1.0ms) SELECT "people".* FROM "people" LIMIT 1=> #<Person id: 2, first_name: "Wilma", last_name: "Flinstone", created_at: "2010-10-19 19:59:36", updated_at: "2010-10-19 19:59:36"> find "people" table name
  • 12. RAILS CONSOLE>> ActiveRecord::Base.logger = Logger.new(STDOUT)>> Person.first SQL (1.0ms) SELECT nameFROM sqlite_masterWHERE type = table AND NOT name = sqlite_sequence Person Load (1.0ms) SELECT "people".* FROM "people" LIMIT 1=> #<Person id: 2, first_name: "Wilma", last_name: "Flinstone", created_at: "2010-10-19 19:59:36", updated_at: "2010-10-19 19:59:36"> find first row in "people table"
  • 13. DYNAMIC GETTERS AND SETTERS>> bret = Person.new>> bret.first_name = "Bret">> bret.last_name = "Smith">> bret.first_name"Bret">> bret.xxxNoMethodError
  • 14. MORE ACTIVE RECORD• save to database as needed• automatically handle update/insert• dynamic queries
  • 15. SQL INJECTION
  • 16. SAFE FROM SQL INJECTIONclass User < ActiveRecord::Base def self.authenticate_unsafely(user_name, password) find(:first, :conditions => "user_name = #{user_name} AND password = #{password}") end def self.authenticate_safely(user_name, password) find(:first, :conditions => [ "user_name = ? AND password = ?", user_name, password ]) end def self.authenticate_safely_simply(user_name, password) find(:first, :conditions => { :user_name => user_name, :password => password }) end
  • 17. QUESTIONS?