Casper Fabricius http://casperfabricius.com. ActiveRecord. O/RM i Ruby on Rails



Relaterede dokumenter
Database for udviklere. Jan Lund Madsen PBS10107

SIMS integration med Microsoft Active Directory, er implementeret, via en mellemdatabase.

Object-Relational Mapping

SIMS Active Directory Service 2.5 Quick Guide

Begrænsninger i SQL. Databaser, efterår Troels Andreasen

Side 1. Databaser og SQL. Dagens gang. Databasebegreber. Introduktion til SQL Kap 1-5

Bemærk! Et PHP script har kun brug for at forbinde én gang til databaseserveren. Det kan så sagtens udføre flere kommandoer vha. denne forbindelse.

Databaseadgang fra Java

EasyIQ Opdatering > 5.4.0

3. SEMESTER 2. PROJECT MULB Gruppe september 2015

OPC Access 3.0 opdatering via Stored Procedure

Arkitektur for begyndere

Software Projekt NoSQL vs RMDB

PHP 3 UGERS FORLØB PHP, MYSQL & SQL

APEX i Praksis Martin B. Nielsen. Navn. MBNDATA Emne

DATABASE Projekt 1-3. semester

Projekt database. 3 Semester - Mul a Projekt 1. Yaser Osman cph-mo102@cphbusiness.dk. Dan Eskildsen cph-de32@cphbusiness.dk

Projekt 1 Database. Cphbusiness Lyngby Multimediedesigner, 3. semester mul-a12e, gruppe 1

Umbraco installationsvejledning

Database. lv/

Arkitektur principper og design mønstre til realisering af enterprise applikationer baseret på rige domænemodeller (og.net)

Eksamen, DSDS, forår 2009

Views etc. Databaser

Dataanalyse og databaser

! Kia Dahlen. Kamilla Klein, Pia Jensen og Maria Korshøj Andersen.

FKG datamodellen Version ArcGIS integration Sidste revisionsdato: 23. maj 2014

Introduktion til SQL queries

Projekt Database, Gruppe 4A. Projekt 1, 3. Semester D A T A B A S E. Klasse MulA13 Gruppenummer: A4

Import af rekursivt (parent-child) hierarki i Palo

Jayne Alice Jensen [Link til portfolio]

Introduktion til OPC Access

Erfaringer med CPR-replikering

Model Drevet Design i Praksis

! Kia Dahlen. Kamilla Klein, Pia Jensen og Maria Korshøj Andersen.

Databasesystemer. Databaser, efterår Troels Andreasen. Efterår 2002

Data lagring. 2. iteration (implement backend)

SQL Server 2016 Data Adgang

Aftenskole i programmering sæson Registrering af tid. Sæson 2 - Lektion 5

Loginsystem (med MySQL)

Septimas høringssvar vedrørende dokumenteterne FKG datamodellen - Version Fysisk implementering.pdf og FKG_2_3_1_mssql.sql

ADFS Opsætning til MODST SSO Moderniseringsstyrelsen

Samspillet mellem databaser og kort styres af GeoCAD programmet GeoDB.

Softwareløsninger til dit netværk

Anvisning i aflevering af bitemporale data

Brugervejledning DAGI Afstemningsområder

Objektorientering og databaser

Indholdsfortegnelse Databaser og PHP... 3 Opgave... 4 Opgave... 5 Opgave... 6 Sidste opgave er en lille gæstebog... 7 Kilder og nyttige links:...

Installation af Oracle 10g Release 2 database

Brugermenuer og brugerdefinerede formularer

GUIDE TIL CLOUD DRIVE

Workshop Persistence

De vigtigste SQL-sætninger. SQL kap Oprette database. DDL og DML

ENTRY/EXIT SERVER. Teknisk beskrivelse

1.8.2 Overblik over releasens

ESRI-PLATFORMEN HOS FORSYNINGSSELSKABER. Dansk Esri Brugerkonferance 2019, Korsør Martin Lauenborg Hansen

CLmul-b14e Gruppe 2 2. Database projekt

Fra idé til virkelig med Azure Mobile Services

Skriftlig opgave. Designtanker i database-nære systemer

OpenTele datamonitoreringsplatform

Version Dato Beskrivelse /11/2012 Initial version /03/2013 Tilføjet eksempel med Template Agent, generelt udvidet dokumentet.

Sektornet VPN. Opsætning af Novell 4.1x server og klient på. Windows 2000/NT/XP

Bypassing the. Brian Marick

Datatekniker med programmering som speciale

Conceptual, logic, physical

IeDA systems Elektronisk dokumenthåndtering: godkendelse, validering, intelligent workflow & arkiv Fremtiden er lige nu!

R E D C A P M A N U A L. Importér data til REDCap fra CSV-fil. Opbyg din eksisterende database i REDCap Version 1.0

DB Flow. fra prototype til forretningsplan

2. Husk at give execute-tilladelser. I Filezilla højreklikker I på den overførte file, så vælger I fileattributes og sætter kryds i execute.

Indholdsfortegnelse for kapitel 3

The LEGO Journey: Building an agile test foundation one brick at the time. Casper Gaardland Englund. Stephan Hjelmdal Nielsen The LEGO Group l

Udvikling af DOTNET applikationer til MicroStation i C#

Microsoft Dynamics AX Scanfak. Fall

En opsamling af artefakter for Hotel Databasen som REST-service Bygger på Hotel opgaven i 8 trin

Opsætning af MobilePBX med Kalenderdatabase

Online kursus: Web Applications Frameworks

Microsoft Dynamics. Fall. 16 AX Scanfak

Oasis: Part of the GIRAF System

Projekt: Database. Multimedia Design: Semester 3 - projekt 01. Sabine Larsen cph-sl176@cphbusiness.dk. Anastasia Keller cph-ak186@cphbusiness.

Case: Zapier-integration mellem simplero og webcrm hos Videokursus

Klasser og Objekter i Python. Uge 46 Learning Python: kap 15-16,

Foto-Applikation Dokumentation. Et Kod-i-Ferien projekt

Sikkerhed i trådløst netværk

OS2MO 2.0 Fugl Fønix

En Kort Introduktion til Oracle

Zapier-integration mellem MailChimp og webcrm hos Azalea IT

Tempus Serva. - er NEM IT til alle virksomheder

1 Domæne Design valg User Klassediagran 5

Anvendelse af dobbelthistorik i GD2

FairSSL Fair priser fair support

Database design for begyndere

Indholdsfortegnelse for kapitel 1

Skriftlig eksamen i kurset. Informationssystemer

Nyheder i Remote Support Platform 3,1

DOCUMENTATION FULLY DRESSED USE-CASE. 29. oktober 2012 [ TEMA PERSISTENS DOKUMENTATION] Use-case: Process Order

Lær Python - Dag 4, modul 2 Objektorienteret programmering

Gæstebog med validering opbygget med MySQL

EasyIQ ConnectAnywhere Release note

FKG datamodellen Version Implementeringsguidelines. FKG datamodellen Version Implementeringsguidelines

Assignment #5 Toolbox Contract

Transkript:

Casper Fabricius http://casperfabricius.com ActiveRecord O/RM i Ruby on Rails

Casper Fabricius Freelance webudvikler - casperfabricius.com 9 års erfaring med webudvikling 6 år med ASP/ASP.NET/C# 3 år med Ruby on Rails cand.merc.dat fra CBS - DØK er Lokalebasen.dk, Kiwiminipris.dk, Ideadox.com m. fl.

Ruby Kombinerer det bedste fra Smalltalk, Perl, Python og Lisp Dynamisk stærkt typet, objekt-orienteret, fortolket Implementeret i C, i dag også på JVM (JRuby) og snart også på.net (IronRuby) Closures, mixins, åbne klasser, reflektion, metaprogrammering

Rails Databasedrevne webapplikationer Convention over configuration Glæde ved at programmere Holdbar produktivitet Smuk kode Skabt til agil udvikling

Ruby-stacken CONTROLLERS Action Controller Merb Sinatra VIEWS ERb HAML Erubis MODELS Active Record Datamapper Sequel DATABASER MySQL PostgreSQL SQLite Oracle SQL Server DB2

ActiveRecord Formentlig verdens i øjeblikket bedste O/RM Har en stor del af æren for Ruby on Rails succes Implementering af Martin Fowlers pattern af samme navn: "An object that wraps a row in a database table or view, encapsulates the database access, and adds domain logic on that data." Princippet om convention over configuration gør at AR kan bruges uden nogen form for konfiguration

Demo

Konventioner i AR Hver klasse har sin egen tabel i databasen Medmindre der bruges nedarvning, hvor flere klasser deler samme tabel Klassens navn er i ental (Person), tabellens navn er i flertal (people) Tabellens primærnøgle er feltet id, der er et autogenereret, unikt id for rækken Medmindre er tale om en ren mange-til-mange relationstabel Med en smule kode kan man let afvige fra konventionerne

Features i ActiveRecord Automatisk mapping mellem klasser og tabeller, attributter og felter Automatisering af ændringer i databasestrukturen gennem migrations Associationer der kontrolleres vha. simple metaprogrammeringsmakroer Dynamiske opslag på alle attributter Valideringsregler og -håndtering Callbacks og observers til at overvåge og kontrollere et objekts livscyklus Nedarvningshierarkier gennem Single Table Inheritance

Database migrations (1) Kontroller databaseskemaets strukturelle ændringer på tværs af udviklings-, staging- og produktionsmiljøer Løser problemet med hvordan man deler databaseændringer med andre udviklere, og efterfølgende får dem i produktion Hver ændring har sin egen tidsstemplede klasse, der beskriver ændringen i et database-ufhængigt sprog Hver udgave af databasen holder selv styr på hvilke ændringer den har fået tilføjet

Database migrations (2) products name order_lines order_id product_id quantity orders email

Associationer (1) Angiver relationerne mellem de forskellige tabeller i databasen, og derved associationerne mellem de forskellige klasser i applikationen. Simpel og letlæselig syntaks Gør det utroligt nemt at tilgå et objekts relaterede objekter vha. metoder på objektet Muliggør også intelligent oprettelse, ændring og sletning af relationer.

Assocationer (2) products name order_lines order_id product_id quantity orders email har mange order_lines har mange ordrer gennem order_lines tilhører en ordre tilhører et produkt har mange order_lines har mange produkter gennem order_lines

Dynamiske opslag Rubys dynamiske natur tillader at der kan laves opslag gennem navngivne metoder på alle attributter På samme måde kan der laves et kald, som enten returnerer eller opretter en model med de givne attributter, alt efter om den eksisterer i forvejen.

Validering (1) Angiver betingelserne for at et givent objekt er gyldigt og kan gemmes i databasen. Indbyggede valideringsfunktioner til de mest alm. ting: Må ikke være blank Må ikke være kortere eller længere end givne tal Skal være et tal - evt. indenfor et bestemt interval Skal være unik Osv. Komplekse forretningsregler kan bygges på vha. custom valideringer.

Validering (2) products name order_lines order_id product_id quantity orders email skal have et navn navnet skal være på mellem 5 og 255 karakterer skal have en ordre skal have et produkt skal have en mængde mængden skal være numerisk skal have en email emailen skal være gyldig

Callbacks og observers (1) Livscyklus for en ActiveRecord model: save valid before_validation before_validation_on_create validate validate_on_create after_validation after_validation_on_create before_save before create create after_create after_save

Callbacks og observers (2) Callbacks Placeres direkte i modellen Nedarves og kan chaines Observers Selvstændig klasse der observerer udvalgte hændelser i bestemte modeller

Nedarvning (1) Single Table Inheritance er indbygget er Rails Andre nedarvningsstrategier findes i plugins Bruges ved at: Tilføje et type felt på tabellen Lave en model der nedarver fra en anden model Parent-modellen skal passe med tabellen

Nedarvning (2) products name order_lines order_id product_id quantity orders email electronics brand

Spørgsmål? Casper Fabricius http://casperfabricius.com