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.4 Getter- und Setter-Methoden  Zur nächsten ÜberschriftZur vorigen Überschrift

In der Klasse Product haben wir keine Methoden definiert. Da die Klasse von ActiveRecord::Base erbt, stehen ihr alle Methoden der Klasse Base zur Verfügung:

Listing  app/models/product.rb

class Product < ActiveRecord::Base
end

Methoden für jedes Feld

Beim ersten Aufruf der Klasse definiert ActiveRecord automatisch für jedes Feld der zugehörigen Datenbanktabelle, in unserem Fall products, eine Methode zum Lesen, objekt.feldname, und eine zum Verändern, objekt.feldname=, des Feldes in der Klasse Product.

Die Methoden zum Lesen werden als Getter -Methoden und die Methoden zum Setzen von Werten als Setter -Methoden bezeichnet.

objekt.feldname?

Außerdem wird eine Methode definiert, mit der überprüft werden kann, ob das Feld leer ist:

objekt.feldname?

product = Product.find(1)

puts product.name # => "iPod nano 3G"
product.name = "MacBook"
product.name?  # => true

product.name = ""
product.name?  # => false

product.name = nil
product.name?  # => false

read_attribute, write_attribute

Rails bietet auch eine alternative Möglichkeit, auf die Felder zuzugreifen. Mit der Methode read_attribute(:feldname) wird der Wert des angegebenen Feldes gelesen, und mit write_attribute(:feldname,wert) wird ein Wert im Feld gespeichert.

product = Product.find(1)
puts product.read_attribute(:name)
product.write_attribute(:name, "MacBook")

Diese Möglichkeit erscheint auf den ersten Blick etwas umständlich, da z. B. product.name viel kürzer ist als product.read_attribute(:name) . Die Methoden können aber eingesetzt werden, um die Standard-Getter- und Setter-Methoden zu überschreiben.


Rheinwerk Computing - Zum Seitenanfang

Überschreiben der Getter- und Setter-Methoden  Zur nächsten ÜberschriftZur vorigen Überschrift

Die Standard-Getter- und Setter-Methoden kann man durch eigene Getter- und Setter-Methoden überschreiben.

Angenommen, wir möchten die Preise nicht in Euro, sondern in Cents speichern. Jedoch sollen weiterhin Euro-Beträge gesetzt und abgefragt werden. In diesem Fall muss der Betrag beim Speichern und Abfragen umgerechnet werden.

Listing  app/models/product.rb

class Product < ActiveRecord::Base
  def price
    Product.read_attribute(:price)/100.0
  end

  def price=(value)
    Product.write_attribute(:price, value*100)
  end
end

Für die beiden Methoden read_attribute und write_attribute bietet ActiveRecord noch eine kürzere Schreibweise, indem man auf das self -Objekt mit einer Array-Syntax zugreift:

Listing  app/models/product.rb

class Product < ActiveRecord::Base
  def price
    self[:price]/100.0
  end

  def price=(value)
    self[:price] = value*100
  end
end

Rheinwerk Computing - Zum Seitenanfang

Automatische Typ-Erkennung  topZur vorigen Überschrift

Datenbank liefert Zeichenketten

ActiveRecord erhält sämtliche Daten aus der Datenbank als Zeichenketten und wandelt sie vor der Ausgabe in den in der Datenbank definierten Datentyp um (siehe Abschnitt kap_migraiton_datentypen). Dies wird besonders deutlich bei einem Feld vom Typ Boolean. Wenn in einem Boolean-Feld der Wert »0« aus der Datenbank gelesen wird, so wandelt das ActiveRecord in false um. Entsprechend wird der Wert »1« in true umgewandelt.

Es ist möglich, den Wert mit der Methode feldname_before_type_cast abzufragen, bevor ActiveRecord die Typumwandlung durchführt.

>> product.enabled
=> true
>> product.enabled_
before_type_cast
=> "1"


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