Upgrade to Pro — share decks privately, control downloads, hide ads and more …

GA | Rails | ActiveRecord

Fer Martin
October 24, 2014

GA | Rails | ActiveRecord

Intro to Ruby On Rails Active Record, including: ORM (Object-Relational Mapping), Validations, CRUD, Associations...

Fer Martin

October 24, 2014
Tweet

More Decks by Fer Martin

Other Decks in Programming

Transcript

  1. LEARNING GOALS 4 How Active Record fits into the Model-View-Controller

    paradigm. What Object Relational Mapping and Active Record are and how they are used in Rails. How to use Active Record models to manipulate data stored in a relational database. Active Record schema naming conventions.Active Record schema naming conventions. The concepts of database migrations, validations and callbacks.
  2. WHAT IS ACTIVE RECORD? ACTIVE RECORD IS THE M IN

    MVC - THE MODEL ! - RESPONSIBLE FOR REPRESENTING: * BUSINESS DATA * LOGIC - FACILITATES THE CREATION AND USE OF BUSINESS OBJECTS - DATA PERSISTED TO A DATABASE 5
  3. ORM OBJECT-RELATIONAL MAPPING CONNECTS: 7 class Person - legs:string !

    - walk() table People - legs:text(255) OBJECTS * WRITING SQL STATEMENTS DIRECTLY IS NOT REQUIRED * HTTP://EN.WIKIPEDIA.ORG/WIKI/LIST_OF_OBJECT-RELATIONAL_MAPPING_SOFTWARE RELATIONAL DATABASE MANAGEMENT SYSTEM
  4. ACTIVE RECORD AS AN ORM FRAMEWORK - REPRESENTS * MODELS

    AND THEIR DATA. * ASSOCIATIONS BETWEEN THESE MODELS * INHERITANCE HIERARCHIES THROUGH RELATED ! - VALIDATE MODELS BEFORE THEY GET PERSISTED TO THE DB ! - PERFORM DB OPERATIONS IN AN OBJECT-ORIENTED FASHION 8
  5. NAMING CONVENTIONS GOAL: EASILY MAP 11 class Person - legs:string

    ! - walk() table People - legs:text(255) MODELS (CLASSES) TABLES (DATABASE) TO
  6. SCHEMA CONVENTIONS DATABASE COLUMN NAMES PRIMARY KEYS: ID (INTEGER) !

    ! FOREIGN KEYS: SINGULARIZED_TABLE_NAME_ID (INTEGER) 13 EXAMPLES: PERSON_ID | ITEM_ID | ORDER_ID | BOOK_ID * CREATED AUTOMATICALLY BY ACTIVE RECORD WHEN USING MIGRATIONS
  7. SCHEMA CONVENTIONS: EXTRAS ACTIVE RECORD WILL ALSO INCLUDES, BY DEFAULT

    ! - CREATED_AT (DATETIME) ! - UPDATED_AT (DATETIME) 14
  8. CREATE | RETURNS A NEW OBJECT | SAVES OBJECT TO

    DATABASE CREATE VS NEW 20 NEW | RETURNS A NEW OBJECT
  9. READ 22 MODEL.ALL | RETURNS A COLLECTION OF ALL THE

    OBJECTS MODEL.FIRST | RETURNS THE OBJECT WITH LOWEST “ID” MODEL.LAST | RETURNS THE OBJECT WITH HIGHEST “ID”
  10. UPDATE | UPDATES A SINGLE OBJECT UPDATE 23 FIND &

    SAVE | FINDS THE OBJECT, UPDATE ATTRIBUTES, SAVE UPDATE_ALL | UPDATES ALL OBJECTS AT ONCE
  11. DESTROY_ALL | DELETES ALL OBJECTS GIVEN A CONDITION DELETE 24

    FIND & DESTROY | FINDS THE OBJECT, DESTROY IT
  12. CREATE! | TRY TO CREATE, RAISE EXCEPTION IF CAN’T CREATE

    VS CREATE! 27 CREATE | TRY TO CREATE, RETURN FALSE IF CAN’T
  13. BANG BANG BANG 28 CREATE | TRY TO CREATE, RETURN

    FALSE IF CAN’T SAVE | TRY TO SAVE, RETURN FALSE IF CAN’T UPDATE | TRY TO UPDATE, RETURN FALSE IF CAN’T ! SAVE! | TRY TO SAVE, RAISE EXCEPTION IF CAN’T CREATE! | TRY TO CREATE, RAISE EXCEPTION IF CAN’T UPDATE! | TRY TO UPDATE, RAISE EXCEPTION IF CAN’T
  14. VALIDATION HELPER OPTIONS 32 :ALLOW_NIL | SKIPS VALIDATIONS IF VALUE

    IS NIL? ! :ALLOW_BLANK | SKIPS VALIDATIONS IF VALUE IS BLANK? ! :MESSAGE | CUSTOM-MADE ERROR MESSAGE ! :ON | WHEN DO YOU WANT TO RUN THE VALIDATIONS | :CREATE | :UPDATE ! http://guides.rubyonrails.org/active_record_validations.html#validation-helpers
  15. VALIDATION ERROSR DISPLAY IN THE VIEW 35 MODEL.ERRORS.ANY? MODEL.ERRORS.COUNT MODEL.ERRORS.FULL_MESSAGES

    ! http://guides.rubyonrails.org/active_record_validations.html#displaying-validation-errors-in-views
  16. WHAT ARE ASSOCIATIONS ASSOCIATIONS ALLOW US TO LINK MODELS !

    38 http://en.wikipedia.org/wiki/Relational_database http://en.wikipedia.org/wiki/Relation_(database)
  17. TYPE OF ASSOCIATIONS WE DEFINE THE TYPES OF ASSOCIATIONS IN

    THE MODELS ! - BELONGS_TO - HAS_ONE - HAS_MANY ! ADVANCED - HAS_ONE :THROUGH - HAS_MANY :THROUGH - HAS_AND_BELONGS_TO_MANY 41 http://en.wikipedia.org/wiki/Relational_database http://en.wikipedia.org/wiki/Relation_(database)
  18. NAMING CONVENTIONS 42 RAILS DATABASE class Order belongs_to :customer table

    orders customer_id class Customer has_many :orders table customers ? …..