SlideShare une entreprise Scribd logo
1  sur  73
Daniel Dengler
                                                                                               web developer




   Ruby on Rails
               Workshop SS 2009


„Ruby on Rails“ and the Rails-Logo are registered trademarks of David Heinemeier Hansson – www.rubyonrails.org
7
Ruby on Rails
   ActiveRecord (2)
Exkurs: Projektplanung
ActiveRecord
  Relationen
Beziehungstypen

• 1:1
• 1:N
• N:M
• Vererbung
1:1 Beziehungen
           1   1
    User           Profile
1:1 Beziehungen
                   1      1
       User                      Profile

       users                    profiles
id       integer       id              integer
name     string        user_id         integer
...      ...           date_of_birth   date
                       ...             ...
1:1 Beziehungen
                   1      1
       User                      Profile

       users                    profiles
id       integer       id              integer
name     string        user_id         integer
...      ...           date_of_birth   date
                       ...             ...
1:1 Beziehungen
                        1          1
            User                           Profile

class User < ActiveRecord:Base class Profile < ActiveRecord:Base
  has_one :profile                belongs_to :user
end                            end
1:1 Beziehungen
                         1           1
            User                            Profile

class User < ActiveRecord:Base class Profile < ActiveRecord:Base
  has_one :profile                belongs_to :user
end                            end

Zugriff erfolgt über:
user_instanz.profile => liefert das zugeordnete Profil

profile_instanz.user => liefert den zugeordneten Benutzer
1:1 Beziehungen
                   1          1
        User                        Profile




Es kann sinnvoll sein diesen Beziehungstyp in einer
               Tabelle zu vereinigen
1:1 Beziehungen

                 User

                 users
      id            integer
      name          string
      date_of_birth date
      ...           ...
1:N Beziehungen
              1   N
    Project           Task
1:N Beziehungen
                      1      N
        Project                        Task

        projects                       tasks
id          integer       id             integer
title       string        project_id     integer
...         ...           title          string
                          ...            ...
1:N Beziehungen
                      1      N
        Project                        Task

        projects                       tasks
id          integer       id             integer
title       string        project_id     integer
...         ...           title          string
                          ...            ...
1:N Beziehungen
                         1          N
           Project                            Task

class Project < ActiveRecord:Base   class Task < ActiveRecord:Base
  has_many :tasks                     belongs_to :project
end                                 end
1:N Beziehungen
                         1           N
           Project                            Task

class Project < ActiveRecord:Base   class Task < ActiveRecord:Base
  has_many :tasks                     belongs_to :project
end                                 end

Zugriff erfolgt über:
project_instanz.tasks => liefert die zugeordneten Aufgaben als
                         Array

task_instanz.project => liefert das zugeordnete Projekt
N:M Beziehungen
                   N          M
           User                      Group

   users           group_users            groups
id   integer      group_id integer    id      integer
name string       user_id integer     title   string
...  ...                              ...     ...
N:M Beziehungen
                   N          M
           User                      Group

   users           group_users            groups
id   integer      group_id integer    id      integer
name string       user_id integer     title   string
...  ...                              ...     ...
N:M Beziehungen
                          N          M
             User                            Group

class User < ActiveRecord:Base      class Group < ActiveRecord:Base
  has_and_belongs_to_many :groups     has_and_belongs_to_many :users
end                                 end
N:M Beziehungen
                          N          M
             User                            Group

class User < ActiveRecord:Base      class Group < ActiveRecord:Base
  has_and_belongs_to_many :groups     has_and_belongs_to_many :users
end                                 end


Zugriff erfolgt über:
user_instanz.groups => liefert die zugeordneten Gruppen

group_instanz.users => liefert die zugeordneten Benutzer
Vererbung

    User




   Manager
Vererbung

     User                      users
                            id     integer
                            name   string
                            type   string
                            ...    ...
    Manager

 Vererbungsmethode: Single Table Inheritance
Vererbung

     User                      users
                            id     integer
                            name   string
                            type   string
                            ...    ...
    Manager

 Vererbungsmethode: Single Table Inheritance
Vererbung

    User
             class User < ActiveRecord:Base
             end

             class Manager < User
             end
   Manager
Lebenszyklus von ActiveRecord
Objekten

Realisiert durch Callbackmethoden, die beim
Aufruf von .save oder .destroy durchlaufen
werden.
Durch implementieren der Methoden in den
eigenen Modellen kann Funktionalität an
der gewünschten Position eingefügt werden.
model.save()
           neu                           bestehend

      before_validation           before_validation
before_validation_on_create before_validation_on_update
        VALIDIERUNG                 VALIDIERUNG
       after_validation            after_validation
 after_validation_on_create after_validation_on_update
         before_save                 before_save
        before_create              before_update
        SPEICHERUNG                 SPEICHERUNG
         after_create               after_update
          after_save                  after_save
model.destroy()
        before_destroy
          LÖSCHUNG
         after_destroy



Verwendung:
class Profile < ActiveRecord:Base
  def after_destroy
   # Bild im Dateisystem löschen
  end
end
Transaktionen

Gewährleisten Datenkonsistenz, falls nötig.


klassisches Beispiel:
Geld von einem Bankkonto auf ein Anderes
transferieren
Transaktionen

account_a.transaction do
 account_a.withdraw 100
 account_b.deposit 100
end
Entweder werden alle Aktionen ausgeführt
oder gar keine
EXKURS
Projektplanung
1
Projektbeschreibung
Projektbeschreibung
•   Einfache Beschreibung des Projektes erstellen
    •   Ziel der Applikation
    •   Zielgruppe
    •   Benutzer / Rollen
    •   Aktivitäten
    •   etc.
Beispiel: PMS

Ziel:
 •   Einfache Anwendung zur Verwaltung von
     Projekten, Aufgaben und Projektmitarbeitern
 •   Auf die wesentlichsten Features reduzieren
Beispiel: PMS

Zielgruppe:
 •   kleine, unabhängige Projektteams
 •   wenig IT Erfahrung
 •   kurze, einfache Projekte
Beispiel: PMS

Benutzer / Rollen:
 •   Projektverwalter (Admin)
 •   Mitglieder
 •   keine Gäste -> Login nötig
Beispiel: PMS

Aktivitäten:
 •   Projekte verwalten (Admin)
 •   Benutzer verwalten (Admin)
 •   Benutzer Projekten zuweisen (Admin)
 •   Aufgaben verwalten (Alle)
2
Features
Features
 •   Aus der Projektbeschreibung ergeben sich
     verschiedene Features
 •   Features in kleinen Einheiten festhalten
 •   Möglicherweise hierarchisch Gliedern
 •   Features priorisieren
     (Auf Abhängigkeiten, Machbarkeit und
     Aufwand achten!)
 •   In abgeschlossene Abschnitte
     zusammenfassen
❑
Projekte

     •
 ❑
anlegen

     •
 ❑
einsehen

     •
 ❑
bearbeiten

     •
 ❑
löschen

        
❑
Attribute

          •
 ❑
Titel

          •
 ❑
Beschreibung

          •
 ❑
Fortschritt

          •
 ❑
Zeitstempel

          •
 ❑
Aufgaben -> Aufgabe
    
❑
Aufgaben

     •
 ❑
anlegen

     •
 ❑
einsehen

     •
 ❑
bearbeiten

     •
 ❑
löschen

        
❑
Attribute

          •
 ❑
Titel

          •
 ❑
Details

          •
 ❑
Status

          •
 ❑
Zeitstempel

          •
 ❑
Projekt -> Projekt

          •
 ❑
Bearbeiter -> Benutzer
    
❑
Benutzer

     •
 ❑
anlegen

     •
 ❑
einsehen

     •
 ❑
bearbeiten

     •
 ❑
löschen

     •
 ❑
Berechtigungen

        
❑
Attribute

          •
 ❑
Vorname

          •
 ❑
Nachname

          •
 ❑
E-Mail

          •
 ❑
Kennwort

          •
 ❑
Zeitstempel

          •
 ❑
Admin

          •
 ❑
Projekte -> Projekt

          •
 ❑
Aufgaben -> Aufgabe
    
❑
Persönliche Startseite

     •
 ❑
zugewiesene Aufgaben

     •
 ❑
offene Aufgaben in Projekte an denen Benutzer betiligt ist
    
❑
Suchfunktion

     •
 ❑
Volltextsuche

        
❑
Filterfuktionen

          •
 ❑
Projekt

          •
 ❑
Aufgaben Status
    
❑
E-Mail Benachrichtigungen

     •
 ❑
Benutzer wurde Projekt zugewiesen

     •
 ❑
Benutzer wurde aus Projekt entfernt

     •
 ❑
Aufgabe wurde erstellt

     •
 ❑
Aufgabe wurde Benutzer zugewiesen

     •
 ❑
zugewiesene Aufgabe wurde geändert
❑
Projekte
                                                         sehr hoch

     •
 ❑
anlegen
                                                      sehr hoch

     •
 ❑
einsehen
                                                     sehr hoch

     •
 ❑
bearbeiten
                                                   sehr hoch

     •
 ❑
löschen
                                                      sehr hoch

        
❑
Attribute
                                                   sehr hoch

          •
 ❑
Titel
                                                   sehr hoch

          •
 ❑
Beschreibung
                                            hoch

          •
 ❑
Fortschritt
                                             niedrig

          •
 ❑
Zeitstempel
                                             sehr hoch

          •
 ❑
Aufgaben -> Aufgabe
                                     hoch
    
❑
Aufgaben
                                                         hoch

     •
 ❑
anlegen
                                                      hoch

     •
 ❑
einsehen
                                                     hoch

     •
 ❑
bearbeiten
                                                   hoch

     •
 ❑
löschen
                                                      hoch

        
❑
Attribute
                                                   hoch

          •
 ❑
Titel
                                                   hoch

          •
 ❑
Details
                                                 mittel

          •
 ❑
Status
                                                  hoch

          •
 ❑
Zeitstempel
                                             hoch

          •
 ❑
Projekt -> Projekt
                                      hoch

          •
 ❑
Bearbeiter -> Benutzer
                                  niedrig
    
❑
Benutzer
                                                         mittel

     •
 ❑
anlegen
                                                      mittel

     •
 ❑
einsehen
                                                     mittel

     •
 ❑
bearbeiten
                                                   mittel

     •
 ❑
löschen
                                                      mittel

     •
 ❑
Berechtigungen
                                               niedrig

        
❑
Attribute
                                                   mittel

          •
 ❑
Vorname
                                                 mittel

          •
 ❑
Nachname
                                                mittel

          •
 ❑
E-Mail
                                                  mittel

          •
 ❑
Kennwort
                                                mittel

          •
 ❑
Zeitstempel
                                             mittel

          •
 ❑
Admin
                                                   mittel

          •
 ❑
Projekte -> Projekt
                                     niedrig

          •
 ❑
Aufgaben -> Aufgabe
                                     niedrig
    
❑
Persönliche Startseite
                                           niedrig

     •
 ❑
zugewiesene Aufgaben
                                         niedrig

     •
 ❑
offene Aufgaben in Projekte an denen Benutzer betiligt ist
   niedrig
    
❑
Suchfunktion

     •
 ❑
Volltextsuche

        
❑
Filterfuktionen

          •
 ❑
Projekt

          •
 ❑
Aufgaben Status
    
❑
E-Mail Benachrichtigungen

     •
 ❑
Benutzer wurde Projekt zugewiesen

     •
 ❑
Benutzer wurde aus Projekt entfernt

     •
 ❑
Aufgabe wurde erstellt

     •
 ❑
Aufgabe wurde Benutzer zugewiesen

     •
 ❑
zugewiesene Aufgabe wurde geändert
3
Datenmodell
Datenmodell


 •   Objekte identi zieren
 •   Attribute identi zieren
 •   Verbindungen identi zieren
Objekte


 •   Projekte
 •   Aufgaben
 •   Benutzer
Attribute
  project         task         user
     title         title       rstname
 description      details     lastname
   progress        state        email
 timestamps    timestamps    password
                                admin
                            timestamps
Attribute
  project           task            user
     title           title          rstname
 description        details        lastname
   progress          state           email
 timestamps      timestamps       password
                                     admin
                                 timestamps


       progress kann berechnet werden
Attribute
  project         task         user
    title          title       rstname
 description      details     lastname
 timestamps        state        email
               timestamps    password
                                admin
                            timestamps
Verbindungen
Verbindungen
                1              has many         n
  project                                                task
                                                n
            m                                            n
                                  created
                    works on       many
                     many

                                                    is assigned
                           n        1                 to many
                                            1

                                user
Verbindungen

  project                   task


             created



                       assigned to



            user
4
Struktur
Struktur

•   Sitemap
•   Work ows
•   Zustände
•   etc.
Home




                projects                  users              contact




view project   edit project   view user           new user             edit user




 edit task
5
User Interface
User Interface

 •   Gestaltungsziele
 •   Inspiration
 •   Skizzen
 •   feinere Skizzen
 •   Wireframes
Gestaltungsziele
 •   klar
 •   sauber
 •   schnell
 •   übersichtlich
 •   benutzbar
 •   kompakt
 •   etc.
Inspiration
 •   ähnliche Anwendungen
 •   andere Anwendungen
 •   Design-Verzeichnisse
 •   Pattern-Verzeichnisse
 •   eigene Erfahrung
 •   Experimente
 •   etc.
Skizzen & Wireframes
Werkzeuge (basis)

 •   Papier
 •   Bleistift
 •   Buntstifte / Marker
 •   Künstler-Radiergummi
Skizzenset (1)
 •   Papier
     •   Skizzenbuch
     •   Markerpapier (beschichtetes Spezialpapier)
     •   große Karteikarten


 •   Künstler-Radiergummi
 •   Spitzer
Skizzenset (2)
 •   Stifte
     •   Druckbleistift (verschiedene Stärken)
     •   Buntstift (hellblau)
     •   Fine-Liner (schwarz, verschiedene Stärken)
     •   Marker (dick, dünn)
         •   schwarz, grau (warm + kalt) = Layout
         •   hellblau = allgemeine Markierungen
         •   rot, gelb, grün = spez. Markierungen
ToDo        projects   users   contact                        You are logged in as Hans Maulwurf | logout



Projects listing                              Create new project
 project one
                                              Title

 project two


 project three
                                              Description

 project four


 project five


 project six                                                                                 create project



Ruby on Rails Workshop SS 2009
ToDo        projects   users   contact                                                                                        You are logged in as Hans Maulwurf | logout



                                    Project with a long long title                                                                                                       hide details

                                    Far far away, behind the word mountains, far from the countries Vokalia and Consonantia, there live the blind texts. Separated they
project one                         live in Bookmarksgrove right at the coast of the Semantics, a large language ocean.
                                    A small river named Duden flows by their place and supplies it with the necessary regelialia. It is a paradisematic country, in which
                                    roasted parts of sentences fly into your mouth.
project two

                                    Progress                                          Members                                                                        add members
project three

                                               50 %                                       Hans Maulwurf                                     Hans Maulwurf
project four                                                                              Hans Maulwurf                                     Hans Maulwurf
                                    5 / 10 Tasks completed                                Hans Maulwurf                                     Hans Maulwurf
project five                                                                               Hans Maulwurf


project six
                                    Tasks

                                       title

                                       description




                                      Assigned to        nobody                                                                                                     create task



                                             Task one

                                             Task one
                                             Far far away, behind the word mountains, far from the countries Vokalia and Consonantia, there live the blind texts. Separated they
                                             live in Bookmarksgrove right at the coast of the Semantics, a large language ocean. A small river named Duden flows by their place
                                             and supplies it with the necessary regelialia. It is a paradisematic country, in which roasted parts of sentences fly into your mouth.


                                             Task one (assigned to Hans Maulwurf)


                                             Task one
ToDo        projects   users   contact                                                                                        You are logged in as Hans Maulwurf | logout



                                     Project with a long long title                                                                                                       hide details

                                     Far far away, behind the word mountains, far from the countries Vokalia and Consonantia, there live the blind texts. Separated they
 project one                         live in Bookmarksgrove right at the coast of the Semantics, a large language ocean.
                                     A small river named Duden flows by their place and supplies it with the necessary regelialia. It is a paradisematic country, in which
                                     roasted parts of sentences fly into your mouth.
 project two

                                     Progress                                          Members                                                                        add members
 project three

                                                50 %                                       Hans Maulwurf                                     Hans Maulwurf
 project four                                                                              Hans Maulwurf                                     Hans Maulwurf
                                     5 / 10 Tasks completed                                Hans Maulwurf                                     Hans Maulwurf
 project five                                                                               Hans Maulwurf


 project six
                                     Tasks

                                        title

                                        description




                                       Assigned to        nobody                                                                                                     create task



                                              Task one

                                              Task one
                                              Far far away, behind the word mountains, far from the countries Vokalia and Consonantia, there live the blind texts. Separated they
                                              live in Bookmarksgrove right at the coast of the Semantics, a large language ocean. A small river named Duden flows by their place
                                              and supplies it with the necessary regelialia. It is a paradisematic country, in which roasted parts of sentences fly into your mouth.


                                              Task one (assigned to Hans Maulwurf)


                                              Task one


                                              Task one


                                              Task one


                                              Task one


                                              Task one


                                              Task one


Ruby on Rails Workshop SS 2009
?

Contenu connexe

En vedette

Präsentation Company Profiles Plus
Präsentation Company Profiles PlusPräsentation Company Profiles Plus
Präsentation Company Profiles PlusXING AG
 
GuíA Definitiva De Carolina Madrigal
GuíA Definitiva De Carolina MadrigalGuíA Definitiva De Carolina Madrigal
GuíA Definitiva De Carolina MadrigalMCMDWJFM
 
El Ritual De Los Indios Cherokee
El Ritual De Los Indios CherokeeEl Ritual De Los Indios Cherokee
El Ritual De Los Indios Cherokeejs2l
 
Hessen babis isidoros
Hessen babis isidorosHessen babis isidoros
Hessen babis isidorosYPEPTH
 
S3 s4 cap-1-seleccion-y-uso-de-tecnologia-educativa-escamilla
S3 s4 cap-1-seleccion-y-uso-de-tecnologia-educativa-escamillaS3 s4 cap-1-seleccion-y-uso-de-tecnologia-educativa-escamilla
S3 s4 cap-1-seleccion-y-uso-de-tecnologia-educativa-escamillaUSET
 
S2 verbosoperativosparalosproyectosdeinnovación
S2 verbosoperativosparalosproyectosdeinnovaciónS2 verbosoperativosparalosproyectosdeinnovación
S2 verbosoperativosparalosproyectosdeinnovaciónUSET
 
Saint-Exupéry, pilote de guerre
Saint-Exupéry, pilote de guerreSaint-Exupéry, pilote de guerre
Saint-Exupéry, pilote de guerredjamilaidir
 
Guía definitva de Carmen Moreno
Guía definitva de Carmen MorenoGuía definitva de Carmen Moreno
Guía definitva de Carmen MorenoMCMDWJFM
 
Biomoleculas guía
Biomoleculas guíaBiomoleculas guía
Biomoleculas guíaLordSedioS
 
Guia De Atencion Del Sindrome Convulsivo
Guia De Atencion Del Sindrome ConvulsivoGuia De Atencion Del Sindrome Convulsivo
Guia De Atencion Del Sindrome ConvulsivoL Duarte
 
Conclusiones Talis
Conclusiones TalisConclusiones Talis
Conclusiones TalisEducación
 
Lipa La Prostitucion
Lipa La ProstitucionLipa La Prostitucion
Lipa La Prostitucionburbuja97
 
Fukushima und kein Ende
Fukushima und kein EndeFukushima und kein Ende
Fukushima und kein EndeOeko-Institut
 
Catalogue d'Antoine Nabajoth
Catalogue d'Antoine NabajothCatalogue d'Antoine Nabajoth
Catalogue d'Antoine NabajothFondationClement
 

En vedette (19)

Präsentation Company Profiles Plus
Präsentation Company Profiles PlusPräsentation Company Profiles Plus
Präsentation Company Profiles Plus
 
GuíA Definitiva De Carolina Madrigal
GuíA Definitiva De Carolina MadrigalGuíA Definitiva De Carolina Madrigal
GuíA Definitiva De Carolina Madrigal
 
El Ritual De Los Indios Cherokee
El Ritual De Los Indios CherokeeEl Ritual De Los Indios Cherokee
El Ritual De Los Indios Cherokee
 
Hessen babis isidoros
Hessen babis isidorosHessen babis isidoros
Hessen babis isidoros
 
S3 s4 cap-1-seleccion-y-uso-de-tecnologia-educativa-escamilla
S3 s4 cap-1-seleccion-y-uso-de-tecnologia-educativa-escamillaS3 s4 cap-1-seleccion-y-uso-de-tecnologia-educativa-escamilla
S3 s4 cap-1-seleccion-y-uso-de-tecnologia-educativa-escamilla
 
S2 verbosoperativosparalosproyectosdeinnovación
S2 verbosoperativosparalosproyectosdeinnovaciónS2 verbosoperativosparalosproyectosdeinnovación
S2 verbosoperativosparalosproyectosdeinnovación
 
Saint-Exupéry, pilote de guerre
Saint-Exupéry, pilote de guerreSaint-Exupéry, pilote de guerre
Saint-Exupéry, pilote de guerre
 
Guía definitva de Carmen Moreno
Guía definitva de Carmen MorenoGuía definitva de Carmen Moreno
Guía definitva de Carmen Moreno
 
Dios Es Azucar
Dios Es AzucarDios Es Azucar
Dios Es Azucar
 
Biomoleculas guía
Biomoleculas guíaBiomoleculas guía
Biomoleculas guía
 
Tu amistad
Tu amistadTu amistad
Tu amistad
 
Guia De Atencion Del Sindrome Convulsivo
Guia De Atencion Del Sindrome ConvulsivoGuia De Atencion Del Sindrome Convulsivo
Guia De Atencion Del Sindrome Convulsivo
 
DeArGe Mitteilungen 3/2000
DeArGe Mitteilungen 3/2000DeArGe Mitteilungen 3/2000
DeArGe Mitteilungen 3/2000
 
Conclusiones Talis
Conclusiones TalisConclusiones Talis
Conclusiones Talis
 
Lipa La Prostitucion
Lipa La ProstitucionLipa La Prostitucion
Lipa La Prostitucion
 
Fukushima und kein Ende
Fukushima und kein EndeFukushima und kein Ende
Fukushima und kein Ende
 
Bouwfonds Naw
Bouwfonds NawBouwfonds Naw
Bouwfonds Naw
 
Diapositiva
DiapositivaDiapositiva
Diapositiva
 
Catalogue d'Antoine Nabajoth
Catalogue d'Antoine NabajothCatalogue d'Antoine Nabajoth
Catalogue d'Antoine Nabajoth
 

Similaire à Ruby on Rails SS09 07

Domain Driven Design in Rails
Domain Driven Design in RailsDomain Driven Design in Rails
Domain Driven Design in RailsAngelo Maron
 
JPA – Der Persistenz-­Standard in der Java EE und SE
JPA – Der Persistenz-­Standard in der Java EE und SEJPA – Der Persistenz-­Standard in der Java EE und SE
JPA – Der Persistenz-­Standard in der Java EE und SEhwilming
 
Lösungsorientierte Fehlerbehandlung
Lösungsorientierte FehlerbehandlungLösungsorientierte Fehlerbehandlung
Lösungsorientierte Fehlerbehandlungroskakori
 
Workshop zu Hibernate 3.2.2 GA
Workshop zu Hibernate 3.2.2 GAWorkshop zu Hibernate 3.2.2 GA
Workshop zu Hibernate 3.2.2 GAOliver Belikan
 
Kompetenzorientierung
KompetenzorientierungKompetenzorientierung
KompetenzorientierungPeter Micheuz
 
Lehmanns Rails Erweitern
Lehmanns Rails ErweiternLehmanns Rails Erweitern
Lehmanns Rails Erweiternjan_mindmatters
 

Similaire à Ruby on Rails SS09 07 (8)

Domain Driven Design in Rails
Domain Driven Design in RailsDomain Driven Design in Rails
Domain Driven Design in Rails
 
JPA – Der Persistenz-­Standard in der Java EE und SE
JPA – Der Persistenz-­Standard in der Java EE und SEJPA – Der Persistenz-­Standard in der Java EE und SE
JPA – Der Persistenz-­Standard in der Java EE und SE
 
Ruby on Rails SS09 05
Ruby on Rails SS09 05Ruby on Rails SS09 05
Ruby on Rails SS09 05
 
Lösungsorientierte Fehlerbehandlung
Lösungsorientierte FehlerbehandlungLösungsorientierte Fehlerbehandlung
Lösungsorientierte Fehlerbehandlung
 
Workshop zu Hibernate 3.2.2 GA
Workshop zu Hibernate 3.2.2 GAWorkshop zu Hibernate 3.2.2 GA
Workshop zu Hibernate 3.2.2 GA
 
Kompetenzorientierung
KompetenzorientierungKompetenzorientierung
Kompetenzorientierung
 
Lehmanns Rails Erweitern
Lehmanns Rails ErweiternLehmanns Rails Erweitern
Lehmanns Rails Erweitern
 
Ruby on Rails SS09 08
Ruby on Rails SS09 08Ruby on Rails SS09 08
Ruby on Rails SS09 08
 

Plus de Daniel Dengler

Plus de Daniel Dengler (8)

Ruby on Rails SS09 12
Ruby on Rails SS09 12Ruby on Rails SS09 12
Ruby on Rails SS09 12
 
Ruby on Rails SS09 11
Ruby on Rails SS09 11Ruby on Rails SS09 11
Ruby on Rails SS09 11
 
Ruby on Rails SS09 10
Ruby on Rails SS09 10Ruby on Rails SS09 10
Ruby on Rails SS09 10
 
Ruby on Rails SS09 06
Ruby on Rails SS09 06Ruby on Rails SS09 06
Ruby on Rails SS09 06
 
Ruby on Rails SS09 04
Ruby on Rails SS09 04Ruby on Rails SS09 04
Ruby on Rails SS09 04
 
Ruby on Rails SS09 03
Ruby on Rails SS09 03Ruby on Rails SS09 03
Ruby on Rails SS09 03
 
Ruby on Rails SS09 02
Ruby on Rails SS09 02Ruby on Rails SS09 02
Ruby on Rails SS09 02
 
Ruby on Rails SS09 01
Ruby on Rails SS09 01Ruby on Rails SS09 01
Ruby on Rails SS09 01
 

Ruby on Rails SS09 07

  • 1. Daniel Dengler web developer Ruby on Rails Workshop SS 2009 „Ruby on Rails“ and the Rails-Logo are registered trademarks of David Heinemeier Hansson – www.rubyonrails.org
  • 2. 7 Ruby on Rails ActiveRecord (2) Exkurs: Projektplanung
  • 5. 1:1 Beziehungen 1 1 User Profile
  • 6. 1:1 Beziehungen 1 1 User Profile users profiles id integer id integer name string user_id integer ... ... date_of_birth date ... ...
  • 7. 1:1 Beziehungen 1 1 User Profile users profiles id integer id integer name string user_id integer ... ... date_of_birth date ... ...
  • 8. 1:1 Beziehungen 1 1 User Profile class User < ActiveRecord:Base class Profile < ActiveRecord:Base has_one :profile belongs_to :user end end
  • 9. 1:1 Beziehungen 1 1 User Profile class User < ActiveRecord:Base class Profile < ActiveRecord:Base has_one :profile belongs_to :user end end Zugriff erfolgt über: user_instanz.profile => liefert das zugeordnete Profil profile_instanz.user => liefert den zugeordneten Benutzer
  • 10. 1:1 Beziehungen 1 1 User Profile Es kann sinnvoll sein diesen Beziehungstyp in einer Tabelle zu vereinigen
  • 11. 1:1 Beziehungen User users id integer name string date_of_birth date ... ...
  • 12. 1:N Beziehungen 1 N Project Task
  • 13. 1:N Beziehungen 1 N Project Task projects tasks id integer id integer title string project_id integer ... ... title string ... ...
  • 14. 1:N Beziehungen 1 N Project Task projects tasks id integer id integer title string project_id integer ... ... title string ... ...
  • 15. 1:N Beziehungen 1 N Project Task class Project < ActiveRecord:Base class Task < ActiveRecord:Base has_many :tasks belongs_to :project end end
  • 16. 1:N Beziehungen 1 N Project Task class Project < ActiveRecord:Base class Task < ActiveRecord:Base has_many :tasks belongs_to :project end end Zugriff erfolgt über: project_instanz.tasks => liefert die zugeordneten Aufgaben als Array task_instanz.project => liefert das zugeordnete Projekt
  • 17. N:M Beziehungen N M User Group users group_users groups id integer group_id integer id integer name string user_id integer title string ... ... ... ...
  • 18. N:M Beziehungen N M User Group users group_users groups id integer group_id integer id integer name string user_id integer title string ... ... ... ...
  • 19. N:M Beziehungen N M User Group class User < ActiveRecord:Base class Group < ActiveRecord:Base has_and_belongs_to_many :groups has_and_belongs_to_many :users end end
  • 20. N:M Beziehungen N M User Group class User < ActiveRecord:Base class Group < ActiveRecord:Base has_and_belongs_to_many :groups has_and_belongs_to_many :users end end Zugriff erfolgt über: user_instanz.groups => liefert die zugeordneten Gruppen group_instanz.users => liefert die zugeordneten Benutzer
  • 21. Vererbung User Manager
  • 22. Vererbung User users id integer name string type string ... ... Manager Vererbungsmethode: Single Table Inheritance
  • 23. Vererbung User users id integer name string type string ... ... Manager Vererbungsmethode: Single Table Inheritance
  • 24. Vererbung User class User < ActiveRecord:Base end class Manager < User end Manager
  • 25. Lebenszyklus von ActiveRecord Objekten Realisiert durch Callbackmethoden, die beim Aufruf von .save oder .destroy durchlaufen werden. Durch implementieren der Methoden in den eigenen Modellen kann Funktionalität an der gewünschten Position eingefügt werden.
  • 26. model.save() neu bestehend before_validation before_validation before_validation_on_create before_validation_on_update VALIDIERUNG VALIDIERUNG after_validation after_validation after_validation_on_create after_validation_on_update before_save before_save before_create before_update SPEICHERUNG SPEICHERUNG after_create after_update after_save after_save
  • 27. model.destroy() before_destroy LÖSCHUNG after_destroy Verwendung: class Profile < ActiveRecord:Base def after_destroy # Bild im Dateisystem löschen end end
  • 28. Transaktionen Gewährleisten Datenkonsistenz, falls nötig. klassisches Beispiel: Geld von einem Bankkonto auf ein Anderes transferieren
  • 29. Transaktionen account_a.transaction do account_a.withdraw 100 account_b.deposit 100 end Entweder werden alle Aktionen ausgeführt oder gar keine
  • 32. Projektbeschreibung • Einfache Beschreibung des Projektes erstellen • Ziel der Applikation • Zielgruppe • Benutzer / Rollen • Aktivitäten • etc.
  • 33. Beispiel: PMS Ziel: • Einfache Anwendung zur Verwaltung von Projekten, Aufgaben und Projektmitarbeitern • Auf die wesentlichsten Features reduzieren
  • 34. Beispiel: PMS Zielgruppe: • kleine, unabhängige Projektteams • wenig IT Erfahrung • kurze, einfache Projekte
  • 35. Beispiel: PMS Benutzer / Rollen: • Projektverwalter (Admin) • Mitglieder • keine Gäste -> Login nötig
  • 36. Beispiel: PMS Aktivitäten: • Projekte verwalten (Admin) • Benutzer verwalten (Admin) • Benutzer Projekten zuweisen (Admin) • Aufgaben verwalten (Alle)
  • 38. Features • Aus der Projektbeschreibung ergeben sich verschiedene Features • Features in kleinen Einheiten festhalten • Möglicherweise hierarchisch Gliedern • Features priorisieren (Auf Abhängigkeiten, Machbarkeit und Aufwand achten!) • In abgeschlossene Abschnitte zusammenfassen
  • 39. ❑ Projekte • ❑ anlegen • ❑ einsehen • ❑ bearbeiten • ❑ löschen ❑ Attribute • ❑ Titel • ❑ Beschreibung • ❑ Fortschritt • ❑ Zeitstempel • ❑ Aufgaben -> Aufgabe ❑ Aufgaben • ❑ anlegen • ❑ einsehen • ❑ bearbeiten • ❑ löschen ❑ Attribute • ❑ Titel • ❑ Details • ❑ Status • ❑ Zeitstempel • ❑ Projekt -> Projekt • ❑ Bearbeiter -> Benutzer ❑ Benutzer • ❑ anlegen • ❑ einsehen • ❑ bearbeiten • ❑ löschen • ❑ Berechtigungen ❑ Attribute • ❑ Vorname • ❑ Nachname • ❑ E-Mail • ❑ Kennwort • ❑ Zeitstempel • ❑ Admin • ❑ Projekte -> Projekt • ❑ Aufgaben -> Aufgabe ❑ Persönliche Startseite • ❑ zugewiesene Aufgaben • ❑ offene Aufgaben in Projekte an denen Benutzer betiligt ist ❑ Suchfunktion • ❑ Volltextsuche ❑ Filterfuktionen • ❑ Projekt • ❑ Aufgaben Status ❑ E-Mail Benachrichtigungen • ❑ Benutzer wurde Projekt zugewiesen • ❑ Benutzer wurde aus Projekt entfernt • ❑ Aufgabe wurde erstellt • ❑ Aufgabe wurde Benutzer zugewiesen • ❑ zugewiesene Aufgabe wurde geändert
  • 40. ❑ Projekte sehr hoch • ❑ anlegen sehr hoch • ❑ einsehen sehr hoch • ❑ bearbeiten sehr hoch • ❑ löschen sehr hoch ❑ Attribute sehr hoch • ❑ Titel sehr hoch • ❑ Beschreibung hoch • ❑ Fortschritt niedrig • ❑ Zeitstempel sehr hoch • ❑ Aufgaben -> Aufgabe hoch ❑ Aufgaben hoch • ❑ anlegen hoch • ❑ einsehen hoch • ❑ bearbeiten hoch • ❑ löschen hoch ❑ Attribute hoch • ❑ Titel hoch • ❑ Details mittel • ❑ Status hoch • ❑ Zeitstempel hoch • ❑ Projekt -> Projekt hoch • ❑ Bearbeiter -> Benutzer niedrig ❑ Benutzer mittel • ❑ anlegen mittel • ❑ einsehen mittel • ❑ bearbeiten mittel • ❑ löschen mittel • ❑ Berechtigungen niedrig ❑ Attribute mittel • ❑ Vorname mittel • ❑ Nachname mittel • ❑ E-Mail mittel • ❑ Kennwort mittel • ❑ Zeitstempel mittel • ❑ Admin mittel • ❑ Projekte -> Projekt niedrig • ❑ Aufgaben -> Aufgabe niedrig ❑ Persönliche Startseite niedrig • ❑ zugewiesene Aufgaben niedrig • ❑ offene Aufgaben in Projekte an denen Benutzer betiligt ist niedrig ❑ Suchfunktion • ❑ Volltextsuche ❑ Filterfuktionen • ❑ Projekt • ❑ Aufgaben Status ❑ E-Mail Benachrichtigungen • ❑ Benutzer wurde Projekt zugewiesen • ❑ Benutzer wurde aus Projekt entfernt • ❑ Aufgabe wurde erstellt • ❑ Aufgabe wurde Benutzer zugewiesen • ❑ zugewiesene Aufgabe wurde geändert
  • 41.
  • 43. Datenmodell • Objekte identi zieren • Attribute identi zieren • Verbindungen identi zieren
  • 44. Objekte • Projekte • Aufgaben • Benutzer
  • 45. Attribute project task user title title rstname description details lastname progress state email timestamps timestamps password admin timestamps
  • 46. Attribute project task user title title rstname description details lastname progress state email timestamps timestamps password admin timestamps progress kann berechnet werden
  • 47. Attribute project task user title title rstname description details lastname timestamps state email timestamps password admin timestamps
  • 49. Verbindungen 1 has many n project task n m n created works on many many is assigned n 1 to many 1 user
  • 50. Verbindungen project task created assigned to user
  • 52. Struktur • Sitemap • Work ows • Zustände • etc.
  • 53. Home projects users contact view project edit project view user new user edit user edit task
  • 55. User Interface • Gestaltungsziele • Inspiration • Skizzen • feinere Skizzen • Wireframes
  • 56. Gestaltungsziele • klar • sauber • schnell • übersichtlich • benutzbar • kompakt • etc.
  • 57. Inspiration • ähnliche Anwendungen • andere Anwendungen • Design-Verzeichnisse • Pattern-Verzeichnisse • eigene Erfahrung • Experimente • etc.
  • 59. Werkzeuge (basis) • Papier • Bleistift • Buntstifte / Marker • Künstler-Radiergummi
  • 60. Skizzenset (1) • Papier • Skizzenbuch • Markerpapier (beschichtetes Spezialpapier) • große Karteikarten • Künstler-Radiergummi • Spitzer
  • 61. Skizzenset (2) • Stifte • Druckbleistift (verschiedene Stärken) • Buntstift (hellblau) • Fine-Liner (schwarz, verschiedene Stärken) • Marker (dick, dünn) • schwarz, grau (warm + kalt) = Layout • hellblau = allgemeine Markierungen • rot, gelb, grün = spez. Markierungen
  • 62.
  • 63.
  • 64.
  • 65.
  • 66.
  • 67.
  • 68.
  • 69.
  • 70. ToDo projects users contact You are logged in as Hans Maulwurf | logout Projects listing Create new project project one Title project two project three Description project four project five project six create project Ruby on Rails Workshop SS 2009
  • 71. ToDo projects users contact You are logged in as Hans Maulwurf | logout Project with a long long title hide details Far far away, behind the word mountains, far from the countries Vokalia and Consonantia, there live the blind texts. Separated they project one live in Bookmarksgrove right at the coast of the Semantics, a large language ocean. A small river named Duden flows by their place and supplies it with the necessary regelialia. It is a paradisematic country, in which roasted parts of sentences fly into your mouth. project two Progress Members add members project three 50 % Hans Maulwurf Hans Maulwurf project four Hans Maulwurf Hans Maulwurf 5 / 10 Tasks completed Hans Maulwurf Hans Maulwurf project five Hans Maulwurf project six Tasks title description Assigned to nobody create task Task one Task one Far far away, behind the word mountains, far from the countries Vokalia and Consonantia, there live the blind texts. Separated they live in Bookmarksgrove right at the coast of the Semantics, a large language ocean. A small river named Duden flows by their place and supplies it with the necessary regelialia. It is a paradisematic country, in which roasted parts of sentences fly into your mouth. Task one (assigned to Hans Maulwurf) Task one
  • 72. ToDo projects users contact You are logged in as Hans Maulwurf | logout Project with a long long title hide details Far far away, behind the word mountains, far from the countries Vokalia and Consonantia, there live the blind texts. Separated they project one live in Bookmarksgrove right at the coast of the Semantics, a large language ocean. A small river named Duden flows by their place and supplies it with the necessary regelialia. It is a paradisematic country, in which roasted parts of sentences fly into your mouth. project two Progress Members add members project three 50 % Hans Maulwurf Hans Maulwurf project four Hans Maulwurf Hans Maulwurf 5 / 10 Tasks completed Hans Maulwurf Hans Maulwurf project five Hans Maulwurf project six Tasks title description Assigned to nobody create task Task one Task one Far far away, behind the word mountains, far from the countries Vokalia and Consonantia, there live the blind texts. Separated they live in Bookmarksgrove right at the coast of the Semantics, a large language ocean. A small river named Duden flows by their place and supplies it with the necessary regelialia. It is a paradisematic country, in which roasted parts of sentences fly into your mouth. Task one (assigned to Hans Maulwurf) Task one Task one Task one Task one Task one Task one Ruby on Rails Workshop SS 2009
  • 73. ?

Notes de l'éditeur