Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Upcoming SlideShare
9 to 5 versus ROWE
Next

0

Share

Ruby on Rails SS09 07

Related Books

Free with a 30 day trial from Scribd

See all

Related Audiobooks

Free with a 30 day trial from Scribd

See all
  • Be the first to like this

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. ?

Views

Total views

802

On Slideshare

0

From embeds

0

Number of embeds

2

Actions

Downloads

0

Shares

0

Comments

0

Likes

0

×