2009-08-15 1 views
4

Lassen Sie uns sagen, dass ich ein SessionsController haben, die Benutzer-Login und Logout steuert, aber die einzigen Aktionen ich wirklich sind, müssen neue (für die Anzeige von Login-Formular), erstellen (für die Authentifizierung und Anmeldung) und zerstören out für die Anmeldung der Benutzer.Ist es falsch, nicht alle REST-Aktionen im Rails-Controller zu implementieren?

Gibt es ein Problem, wenn ich nur diese drei Aktionen in meinem Controller habe, oder muss ich sie alle implementieren, um es richtig RESTful zu machen?

Und zweite kleine Frage. Einige Leute sagen, dass Gerüst schlecht ist, und dass man Code von Hand schreiben sollte, aber ich finde es ziemlich nützlich und zeitsparend.

Ist es in Ordnung, Gerüste zu verwenden, oder ist es böse, die vermieden werden sollten und warum?

Antwort

10

Es ist auf jeden Fall in Ordnung, nur die RESTful Aktionen zu erstellen, die Sie für diese Ressource unterstützen wollen. Sie müssen nicht alle 7 Aktionen definieren. Tatsächlich verwendet die Mehrheit meiner Controller nicht alle 7 Aktionen.

Ist es in Ordnung, Gerüste zu verwenden, oder ist es böse, die vermieden werden sollte und warum?

Das eingebaute Rails-Gerüst dient hauptsächlich dazu, zu Beginn beim Start zu helfen. Ich persönlich benutze es aus mehreren Gründen nicht für die tägliche Entwicklung.

  • erzeugt sie ein CSS und Layout-Datei, wenn ich die bestehende Anwendung verwenden möchten ein
  • es alle Controller-Aktionen erzeugt (wie ich sagte, ich in der Regel nicht alle von ihnen wollen)
  • es schafft ein XML-Format für jede Aktion, die ich fast nie will
  • es nicht die Form in einem Teil nicht setzen, wenn ich beide „bearbeiten“ und „neue“ Aktionen muß
  • ich manchmal eine andere Test Bibliothek verwenden (wie Shoulda oder RSpec)

Ich bin jedoch ein Fan von Gerüsten für die Beschleunigung der Entwicklung. Deshalb habe ich die nifty_scaffold generator erstellt, die ich fast immer benutze. Es hat die oben genannten Probleme nicht.

+0

+1 - Große Antwort! –

4

Es ist nichts falsch daran, nur die Aktionen auszuführen, die Sie benötigen. In Rails 2.3 können Sie noch expliziter in Ihren Routen sein.

map.resources: foo,: Nur => [: Erstellen: zerstören, neue]

1

Remember REST hat nur wirklich 4 Verben GET, POST, AKTUALISIEREN PUT und DELETE. Die Bearbeitungs- und neuen Aktionen in Rails sind Problemumgehungen des GET-Verbs, um das Formular zum Bearbeiten der Ressource anzuzeigen. Die Indexaktion ist ein GET auf einer anderen Ressource, die nur mit den anderen gebündelt ist, da es in einem Anwendungsentwicklungskontext sinnvoller ist, sie in derselben Datei zu haben.

+1

REST definiert keine Aktionen. Ich nehme an, Sie beziehen sich auf die vier wichtigsten HTTP-Verben GET, PUT, POST und DELETE.HTTP hat jedoch andere Verben. –

Verwandte Themen