Forum: Rails Germany Eine kurze Frage

202d4ff72799277a1470220b3c806d9e?d=identicon&s=25 Thiemo Schnellenpfeil (daluc)
on 2009-06-14 18:45
Hallo liebe Forenuser.

Ich bin vor ca. einer Woche in ROR eingestiegen. Ich muss eine
Projektarbeit abliefern über eine datenbankgestützte Webapplikation mit
ROR. Bislang habe ich die Datenbank erstellt. Es gibt für die neun
Tabellen entsprechend die neun models. Die Assoziationen und
validierungsparameter habe ich bereits eingetragen. Mir gehts nun um
folgendes, was ich leider noch nicht ganz verstehe:

Brauche ich für jedes model einen controller?
Wenn ich einen Datensatz anlegen möchte, der mit einer anderen Tabelle
verbunden sein muss, welcher controller übernimmt das?

Außerdem möchte ich nur eine Webseite nutzen um auf die Daten gesamt
zuzugreifen. Brauche ich dann einen Hauptcontroller? Oder macht dass der
application_controller dann? Wie muss ich die views anlegen? Brauche ich
für jedes model ein view?

Ich weiß das sind einige Fragen, aber deshalb bin ich ja hier ;-)
btw. gibt es irgendwo eine gute source für ROR?

Vielen Dank fürs lesen und antworten!
A416b2f695bfa8ac6ec1a71d52b30fbd?d=identicon&s=25 Andreas Haller (Guest)
on 2009-06-15 00:36
(Received via mailing list)
Hi Thiemo,
ich antworte nur ganz kurz und unvollständig.

> Brauche ich für jedes model einen controller?
Nein. Genauso wie du nicht für jedes Model eine View brauchst. Es hat
allerdings Vorteile, wenn ein Controller nur auf ein Model zugreift
(siehe nächste Frage).

> Wenn ich einen Datensatz anlegen möchte, der mit einer anderen Tabelle
> verbunden sein muss, welcher controller übernimmt das?
Sowas wie has_many (:through) oder belongs_to ? Das kannst du dir
aussuchen und hängt von deinem jeweiligen Design ab..
#1: n-zu-n-Verbindung
Zum Beispiel hast du zwei Ressourcen: Pizzen und Kunden
Warum willst du die beiden verbinden? – Um eine Bestellung zu
modellieren.  Also kommt eine weitere Ressource "Bestellung" hinzu.
Im Model hieße das dann in etwa "Pizza has_many :kunden :through
=> :bestellung". Hier hätte man für die Verknüpfung also ein eigenes
Model und eben auch einen eigenen "BestellungenController" (mit
Create, Read (show), Update, Delete)
#2: 1-zu-1-Verbindung
Wieder zwei Ressourcen: Topf und Deckel. – "Topf has_one :deckel"
"Deckel belongs_to :topf"
Damit man über ein Webinterface Jedem Topf genau einen Deckel zuweisen
kann brauchst du nur die beiden Modelle . Die Verknüpfung würde man in
der update-Method vom DeckelController erstellen.

Allgemein kann man sagen: Restful gewinnt. Versuch dich in einem
controller wenn möglich+sinnvoll maximal auf die CRUD methoden zu
beschränken.

> Außerdem möchte ich nur eine Webseite nutzen um auf die Daten gesamt
> zuzugreifen. Brauche ich dann einen Hauptcontroller? Oder macht dass
> der
> application_controller dann? Wie muss ich die views anlegen? Brauche
> ich
> für jedes model ein view?
Der ApplicationController dient nur als Basis Klasse für deine eigenen
Controller. Der wird nur dazu benutzt, damit deine Controller-Klassen
davon erben.

> Ich weiß das sind einige Fragen, aber deshalb bin ich ja hier ;-)
> btw. gibt es irgendwo eine gute source für ROR?
Du meinst Dokumentation? Bücher? – Da gibt es mittlerweile jede Menge.
Eine konkrete Empfehlung hab ich allerdings nicht. Das Standartwerk
ist ja bekanntlich das hier: http://www.pragprog.com/titles/rails2  Da
gibt es aber auch ganz viel anderes.
Paar online Quellen:
http://railscasts.com
http://apidock.com/rails
http://railsapi.com/doc/rails-v2.3.2.1_ruby-v1.9

Gruß,
Andreas
A416b2f695bfa8ac6ec1a71d52b30fbd?d=identicon&s=25 Andreas Haller (Guest)
on 2009-06-15 00:41
(Received via mailing list)
Ups, Korrektur, da gibts ja mittlerweile ne dritte Edition.
> Das Standartwerk ist ja bekanntlich das hier:
http://www.pragprog.com/titles/rails3

whatever
202d4ff72799277a1470220b3c806d9e?d=identicon&s=25 Thiemo Schnellenpfeil (daluc)
on 2009-06-15 01:12
Prima, vielen Dank für die Infos!!
This topic is locked and can not be replied to.