Eine kurze Frage

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 :wink:
btw. gibt es irgendwo eine gute source für ROR?

Vielen Dank fürs lesen und antworten!

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 :wink:
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

Ups, Korrektur, da gibts ja mittlerweile ne dritte Edition.

Das Standartwerk ist ja bekanntlich das hier:
http://www.pragprog.com/titles/rails3

whatever

Prima, vielen Dank für die Infos!!