Daniel Dengler
                                                                                               web develope...
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                    profil...
1:1 Beziehungen
                   1      1
       User                      Profile

       users                    profil...
1:1 Beziehungen
                        1          1
            User                           Profile

class User < Activ...
1:1 Beziehungen
                         1           1
            User                            Profile

class User < Ac...
1:1 Beziehungen
                   1          1
        User                        Profile




Es kann sinnvoll sein diese...
1:1 Beziehungen

                 User

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

        projects              ...
1:N Beziehungen
                      1      N
        Project                        Task

        projects              ...
1:N Beziehungen
                         1          N
           Project                            Task

class Project < ...
1:N Beziehungen
                         1           N
           Project                            Task

class Project <...
N:M Beziehungen
                   N          M
           User                      Group

   users           group_users...
N:M Beziehungen
                   N          M
           User                      Group

   users           group_users...
N:M Beziehungen
                          N          M
             User                            Group

class User < Ac...
N:M Beziehungen
                          N          M
             User                            Group

class User < Ac...
Vererbung

    User




   Manager
Vererbung

     User                      users
                            id     integer
                            nam...
Vererbung

     User                      users
                            id     integer
                            nam...
Vererbung

    User
             class User < ActiveRecord:Base
             end

             class Manager < User
      ...
Lebenszyklus von ActiveRecord
Objekten

Realisiert durch Callbackmethoden, die beim
Aufruf von .save oder .destroy durchla...
model.save()
           neu                           bestehend

      before_validation           before_validation
befor...
model.destroy()
        before_destroy
          LÖSCHUNG
         after_destroy



Verwendung:
class Profile < ActiveRecor...
Transaktionen

Gewährleisten Datenkonsistenz, falls nötig.


klassisches Beispiel:
Geld von einem Bankkonto auf ein Andere...
Transaktionen

account_a.transaction do
 account_a.withdraw 100
 account_b.deposit 100
end
Entweder werden alle Aktionen a...
EXKURS
Projektplanung
1
Projektbeschreibung
Projektbeschreibung
•   Einfache Beschreibung des Projektes erstellen
    •   Ziel der Applikation
    •   Zielgruppe
    ...
Beispiel: PMS

Ziel:
 •   Einfache Anwendung zur Verwaltung von
     Projekten, Aufgaben und Projektmitarbeitern
 •   Auf ...
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 zuweis...
2
Features
Features
 •   Aus der Projektbeschreibung ergeben sich
     verschiedene Features
 •   Features in kleinen Einheiten festh...
❑
Projekte

     •
 ❑
anlegen

     •
 ❑
einsehen

     •
 ❑
bearbeiten

     •
 ❑
löschen

        
❑
Attribute

        ...
❑
Projekte
                                                         sehr hoch

     •
 ❑
anlegen
                         ...
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     lastnam...
Attribute
  project           task            user
     title           title          rstname
 description        details...
Attribute
  project         task         user
    title          title       rstname
 description      details     lastnam...
Verbindungen
Verbindungen
                1              has many         n
  project                                                ta...
Verbindungen

  project                   task


             created



                       assigned to



           ...
4
Struktur
Struktur

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




                projects                  users              contact




view project   edit project   view user ...
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
 •   ei...
Skizzen & Wireframes
Werkzeuge (basis)

 •   Papier
 •   Bleistift
 •   Buntstifte / Marker
 •   Künstler-Radiergummi
Skizzenset (1)
 •   Papier
     •   Skizzenbuch
     •   Markerpapier (beschichtetes Spezialpapier)
     •   große Karteik...
Skizzenset (2)
 •   Stifte
     •   Druckbleistift (verschiedene Stärken)
     •   Buntstift (hellblau)
     •   Fine-Line...
ToDo        projects   users   contact                        You are logged in as Hans Maulwurf | logout



Projects list...
ToDo        projects   users   contact                                                                                    ...
ToDo        projects   users   contact                                                                                    ...
?
Ruby on Rails SS09 07
Ruby on Rails SS09 07
Ruby on Rails SS09 07
Ruby on Rails SS09 07
Ruby on Rails SS09 07
Ruby on Rails SS09 07
Ruby on Rails SS09 07
Ruby on Rails SS09 07
Ruby on Rails SS09 07
Nächste SlideShare
Wird geladen in …5
×

Ruby on Rails SS09 07

536 Aufrufe

Veröffentlicht am

Veröffentlicht in: Technologie
0 Kommentare
0 Gefällt mir
Statistik
Notizen
  • Als Erste(r) kommentieren

  • Gehören Sie zu den Ersten, denen das gefällt!

Keine Downloads
Aufrufe
Aufrufe insgesamt
536
Auf SlideShare
0
Aus Einbettungen
0
Anzahl an Einbettungen
2
Aktionen
Geteilt
0
Downloads
0
Kommentare
0
Gefällt mir
0
Einbettungen 0
Keine Einbettungen

Keine Notizen für die Folie

































































  • Ruby on Rails SS09 07

    1. 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. 2. 7 Ruby on Rails ActiveRecord (2) Exkurs: Projektplanung
    3. 3. ActiveRecord Relationen
    4. 4. Beziehungstypen • 1:1 • 1:N • N:M • Vererbung
    5. 5. 1:1 Beziehungen 1 1 User Profile
    6. 6. 1:1 Beziehungen 1 1 User Profile users profiles id integer id integer name string user_id integer ... ... date_of_birth date ... ...
    7. 7. 1:1 Beziehungen 1 1 User Profile users profiles id integer id integer name string user_id integer ... ... date_of_birth date ... ...
    8. 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. 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. 10. 1:1 Beziehungen 1 1 User Profile Es kann sinnvoll sein diesen Beziehungstyp in einer Tabelle zu vereinigen
    11. 11. 1:1 Beziehungen User users id integer name string date_of_birth date ... ...
    12. 12. 1:N Beziehungen 1 N Project Task
    13. 13. 1:N Beziehungen 1 N Project Task projects tasks id integer id integer title string project_id integer ... ... title string ... ...
    14. 14. 1:N Beziehungen 1 N Project Task projects tasks id integer id integer title string project_id integer ... ... title string ... ...
    15. 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. 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. 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. 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. 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. 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. 21. Vererbung User Manager
    22. 22. Vererbung User users id integer name string type string ... ... Manager Vererbungsmethode: Single Table Inheritance
    23. 23. Vererbung User users id integer name string type string ... ... Manager Vererbungsmethode: Single Table Inheritance
    24. 24. Vererbung User class User < ActiveRecord:Base end class Manager < User end Manager
    25. 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. 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. 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. 28. Transaktionen Gewährleisten Datenkonsistenz, falls nötig. klassisches Beispiel: Geld von einem Bankkonto auf ein Anderes transferieren
    29. 29. Transaktionen account_a.transaction do account_a.withdraw 100 account_b.deposit 100 end Entweder werden alle Aktionen ausgeführt oder gar keine
    30. 30. EXKURS Projektplanung
    31. 31. 1 Projektbeschreibung
    32. 32. Projektbeschreibung • Einfache Beschreibung des Projektes erstellen • Ziel der Applikation • Zielgruppe • Benutzer / Rollen • Aktivitäten • etc.
    33. 33. Beispiel: PMS Ziel: • Einfache Anwendung zur Verwaltung von Projekten, Aufgaben und Projektmitarbeitern • Auf die wesentlichsten Features reduzieren
    34. 34. Beispiel: PMS Zielgruppe: • kleine, unabhängige Projektteams • wenig IT Erfahrung • kurze, einfache Projekte
    35. 35. Beispiel: PMS Benutzer / Rollen: • Projektverwalter (Admin) • Mitglieder • keine Gäste -> Login nötig
    36. 36. Beispiel: PMS Aktivitäten: • Projekte verwalten (Admin) • Benutzer verwalten (Admin) • Benutzer Projekten zuweisen (Admin) • Aufgaben verwalten (Alle)
    37. 37. 2 Features
    38. 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. 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. 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. 41. 3 Datenmodell
    42. 42. Datenmodell • Objekte identi zieren • Attribute identi zieren • Verbindungen identi zieren
    43. 43. Objekte • Projekte • Aufgaben • Benutzer
    44. 44. Attribute project task user title title rstname description details lastname progress state email timestamps timestamps password admin timestamps
    45. 45. Attribute project task user title title rstname description details lastname progress state email timestamps timestamps password admin timestamps progress kann berechnet werden
    46. 46. Attribute project task user title title rstname description details lastname timestamps state email timestamps password admin timestamps
    47. 47. Verbindungen
    48. 48. Verbindungen 1 has many n project task n m n created works on many many is assigned n 1 to many 1 user
    49. 49. Verbindungen project task created assigned to user
    50. 50. 4 Struktur
    51. 51. Struktur • Sitemap • Work ows • Zustände • etc.
    52. 52. Home projects users contact view project edit project view user new user edit user edit task
    53. 53. 5 User Interface
    54. 54. User Interface • Gestaltungsziele • Inspiration • Skizzen • feinere Skizzen • Wireframes
    55. 55. Gestaltungsziele • klar • sauber • schnell • übersichtlich • benutzbar • kompakt • etc.
    56. 56. Inspiration • ähnliche Anwendungen • andere Anwendungen • Design-Verzeichnisse • Pattern-Verzeichnisse • eigene Erfahrung • Experimente • etc.
    57. 57. Skizzen & Wireframes
    58. 58. Werkzeuge (basis) • Papier • Bleistift • Buntstifte / Marker • Künstler-Radiergummi
    59. 59. Skizzenset (1) • Papier • Skizzenbuch • Markerpapier (beschichtetes Spezialpapier) • große Karteikarten • Künstler-Radiergummi • Spitzer
    60. 60. 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
    61. 61. 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
    62. 62. 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
    63. 63. 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
    64. 64. ?

    ×