Rheinwerk Computing < openbook > Rheinwerk Computing - Professionelle Bücher. Auch für Einsteiger.
Professionelle Bücher. Auch für Einsteiger.

Inhaltsverzeichnis
Geleitwort des Fachgutachters
Einleitung
1 Einführung
2 Installation
3 Erste Schritte
4 Einführung in Ruby
5 Eine einfache Bookmarkverwaltung
6 Test-Driven Development
7 Rails-Projekte erstellen
8 Templatesystem mit ActionView
9 Steuerzentrale mit ActionController
10 Datenbankzugriff mit ActiveRecord
11 E-Mails verwalten mit ActionMailer
12 Nützliche Helfer mit ActiveSupport
13 Ajax on Rails
14 RESTful Rails und Webservices
15 Rails mit Plug-ins erweitern
16 Performancesteigerung
17 Sicherheit
18 Veröffentlichen einer Rails-Applikation auf einem Server
Ihre Meinung?

Spacer
 <<   zurück
Ruby on Rails 2 von Hussein Morsy, Tanja Otto
Das Entwickler-Handbuch
Buch: Ruby on Rails 2

Ruby on Rails 2
geb., mit DVD
699 S., 39,90 Euro
Rheinwerk Computing
ISBN 978-3-89842-779-1
Online bestellenPrint-Version Jetzt Buch bestellen
* versandkostenfrei in (D) und (A)
Pfeil 10 Datenbankzugriff mit ActiveRecord
  Pfeil 10.1 Einführung
  Pfeil 10.2 Eine ActiveRecord-Model-Klasse generieren
  Pfeil 10.3 Rake-Tasks zum Verwalten von Datenbanken
  Pfeil 10.4 Getter- und Setter-Methoden
  Pfeil 10.5 Erstellen, bearbeiten und löschen
  Pfeil 10.6 Suchen
  Pfeil 10.7 Datenbankschema und Migrations
  Pfeil 10.8 Migration-Skripte
  Pfeil 10.9 Migration-Befehle im Detail
  Pfeil 10.10 Assoziationen
  Pfeil 10.11 Validierung
  Pfeil 10.12 Statistische Berechnungen
  Pfeil 10.13 Callbacks
  Pfeil 10.14 Vererbung


Rheinwerk Computing - Zum Seitenanfang

10.5 Erstellen, bearbeiten und löschen  Zur nächsten ÜberschriftZur vorigen Überschrift

Wenn Sie ein neues ActiveRecord-Objekt erzeugen, haben Sie die Wahl, ob es zunächst nur im Speicher angelegt (new) oder direkt in der Datenbank gespeichert werden soll (create).


Rheinwerk Computing - Zum Seitenanfang

Neues ActiveRecord-Objekt erstellen  Zur nächsten ÜberschriftZur vorigen Überschrift

Es gibt mehrere Möglichkeiten, ein neues Objekt anzulegen:

client = Client.new
client.firstname = "William"
client.lastname = "Adama"
client.save

Alternativ kann auch ein Block verwendet werden:

Client.new do |client|
  client.firstname = "William"
  client.lastname = "Adama"
end.save

Die kürzeste Variante ist die folgende:

client = Client.new(:firstname => "Willam",
		    :lastname => "Adama")
client.save

save

Die Methode save liefert true zurück, wenn das Objekt erfolgreich gespeichert werden konnte, ansonsten false . Ein Grund, warum ein Objekt nicht gespeichert werden kann, ist die Verletzung von Validierungsregeln, falls diese definiert wurden. Wenn man keine Abfrage auf den Rückgabewert der Methode save durchführt, kann es passieren, dass man es nicht bemerkt, wenn ein Objekt nicht gespeichert werden konnte.

Die Methode save! hingegen erzeugt einen Laufzeitfehler. Somit kann ein Fehlschlagen des Speichervorgangs nicht so leicht übersehen werden.


Rheinwerk Computing - Zum Seitenanfang

ActiveRecord-Objekt erstellen und direkt speichern  Zur nächsten ÜberschriftZur vorigen Überschrift

Mit der Methode create wird ein Objekt erstellt und automatisch gespeichert, ohne dass explizit die Methode save oder save! aufgerufen wird.

Auch hier unterstützt ActiveRecord mehrere Varianten:

Client.create do |c|
  c.firstname = "William"
  c.lastname = "Adama"
end

Oder in der Kurzvariante:

Client.create(:firstname => "William", :lastname => "Adama")

In beiden Fällen ist der Rückgabewert das gespeicherte ActiveRecord-Objekt. Das heißt, Sie können auch client1 = Client.create(...) schreiben. Falls das Objekt z. B. wegen einer nicht erfüllten Validierungsregel nicht gespeichert werden kann, wird das ungespeicherte Objekt zurückgeliefert. Die Methode create! führt hingegen zu einem Laufzeitfehler, falls das Objekt nicht gespeichert werden kann.


Rheinwerk Computing - Zum Seitenanfang

Aktualisieren von Objekten  Zur nächsten ÜberschriftZur vorigen Überschrift

Der einfachste Weg, ein Objekt zu verändern, ist, ein Attribut zu setzen und das Objekt anschließend wieder zu speichern:

client = Client.find(1)
  client.firstname = "Lee"
  client.save

update_attribute

Alternativ kann auch die Methode update_attribute verwendet werden, die keinen Aufruf der save -Methode benötigt:

client = Client.find(1)
client.update_attribute(:firstname,"Lee")

update_attributes

Um mehrere Attribute zu aktualisieren, können Sie die Methode update_attributes verwenden:

client = Client.find(1)
client.update_attributes(:firstname => "Kara",
			 :lastname => "Trace")
Aktualisieren von Model-Daten im Controller
Die Methode update_attributes wird oft in Controllern in der Action update eingesetzt, um Daten eines bestimmten Datensatzes zu ändern. Für das Formular zum Ändern eines Client-Objekts stehen zum Beispiel die Formulareingaben des Benutzers im Controller über params[:client] zur Verfügung. Mit nur zwei Befehlen ist dann das Aktualisieren dieses Objekts im Controller möglich:
@client = Client.find(params[:id])
@client.update_attributes(params[:client])

update

Mit Hilfe der Methode update, die jedem ActiveRecord-Model zur Verfügung steht, geht es sogar noch kürzer:

Client.update(1,:firstname => "Kara", :lastname => "Trace")

Rheinwerk Computing - Zum Seitenanfang

Löschen von Objekten  topZur vorigen Überschrift

destroy

Sie können entweder ein einzelnes Objekt löschen, indem Sie die Methode destroy auf ein vorhandenes Objekt anwenden, oder mehrere Datensätze löschen, indem Sie die Methoden delete oder destroy auf die Model-Klasse anwenden.

client = Client.find(1)
client.destroy

Die Methode destroy löscht zwar den entsprechenden Datensatz in der Datenbanktabelle, das Objekt client ist aber noch vorhanden, das heißt, es kann weiterhin verwendet werden. Allerdings können die Attribute nicht mehr verändert werden, das heißt, sie sind »eingefroren«. Ein Versuch, ein Attribut zu ändern, führt zu einem Laufzeitfehler:

client = Client.find(1)
client.destroy
client.firstname = "Lee"
=> TypeError: can't modify frozen hash

freeze

Die Methode frozen? kann verwendet werden, um zu überprüfen, ob ein Objekt verändert werden kann. Mit der Methode freeze können Sie ein Objekt explizit einfrieren.

Sie können auch Datensätze löschen, ohne die Objekte vorher laden zu müssen. Dazu existieren zu jedem ActiveRecord-Model die Klassen-Methoden destroy und delete.

Löschen eines Datensatzes mit der Angabe der ID:

Client.destroy(1)

oder auch durch Angabe einer Liste von IDs:

Client.destroy([1,4,6])

delete

Die Methode delete unterscheidet sich von der Methode destroy dadurch, dass die Before- und After-filter nicht ausgeführt werden.

Um mehrere oder alle Datensätze einer Tabelle zu löschen, können Sie die Methode destroy_all oder delete_all verwenden.



Ihre Meinung

Wie hat Ihnen das Openbook gefallen? Wir freuen uns immer über Ihre Rückmeldung. Schreiben Sie uns gerne Ihr Feedback als E-Mail an kommunikation@rheinwerk-verlag.de.

 <<   zurück
  Zum Rheinwerk-Shop
Zum Rheinwerk-Shop: Ruby on Rails 2
Ruby on Rails 2
Jetzt Buch bestellen
 Ihre Meinung?
Wie hat Ihnen das Openbook gefallen?
Ihre Meinung

 Buchtipps
Zum Rheinwerk-Shop: Ruby on Rails 3.1






 Ruby on Rails 3.1


Zum Rheinwerk-Shop: Responsive Webdesign






 Responsive Webdesign


Zum Rheinwerk-Shop: Suchmaschinen-Optimierung






 Suchmaschinen-
 Optimierung


Zum Rheinwerk-Shop: JavaScript






 JavaScript


Zum Rheinwerk-Shop: Schrödinger lernt HTML5, CSS3 und JavaScript






 Schrödinger lernt
 HTML5, CSS3
 und JavaScript


 Lieferung
Versandkostenfrei bestellen in Deutschland, Österreich und der Schweiz
InfoInfo




Copyright © Rheinwerk Verlag GmbH 2008
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das Openbook denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt.
Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.


Nutzungsbestimmungen | Datenschutz | Impressum

Rheinwerk Verlag GmbH, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, service@rheinwerk-verlag.de

Cookie-Einstellungen ändern