3 Stimmen

Wie kompliziert können Rails-Modelle sein? Beispielprojekte?

Ich versuche, über die Anfänger Stufe von Rails und in die Zwischenbericht aber es fällt mir schwer, fortgeschrittenere Beispiele zu finden, aus denen ich lernen kann.

Ich habe zum Beispiel gelesen, dass man bei "verschachtelten Routen" vorsichtig sein muss und nicht mehr als 2 tief gehen sollte. Was passiert in einer Situation wie dieser?

  • Kunden können viele Bestellungen aufgeben
  • Aufträge können viele Positionen haben
  • Gegenstände können viele Arten von Optionen haben
  • Jede Art von Option kann mit Einschränkungen verbunden sein: Sie ist an bestimmten Tagen verfügbar, erfordert eine Auswahl oder wirkt sich auf den Gesamtpreis aus usw.

Ist dies ein Dummkopf Errand oder einfache Sachen für Rails. Ich nehme letzteres an, kann aber keine interessanten Beispielprojekte (Quelle) da draußen finden, um daraus zu lernen? Bücher scheinen auf die Grundlagen zu stoppen... Ideen?

2voto

tadman Punkte 200181

Sie können mit verschachtelten Routen so tief gehen, wie Sie wollen, aber denken Sie daran, dass nur weil Sie es können, Sie es nicht tun sollten. Je tiefer Sie graben, desto mehr Arbeit machen Sie sich selbst.

Das Muster, das ich gesehen habe, ist, dass für jede Ebene der Tiefe, müssen Sie eine Basis-Controller, der die übergeordneten Parameter behandelt, und eine Unterklasse, die die Besonderheiten behandelt erstellen. Dies neigt dazu, spielen entlang der Linien von:

Customer::BaseController < ApplicationController
CustomerController < CustomerController:: BaseController

Customer::Orders::BaseController < Customer::BaseController
Customer::OrdersController < Customer::Orders::BaseController

Customer::Orders::Items::BaseController < Customer::Orders::BaseController
Customer::Orders::ItemsController < Customer::Orders::Items::BaseController

Der BaseController übernimmt in jedem Fall das Laden und Interpretieren von Parametern in einer generischen Art und Weise, wie zum Beispiel:

class Customer::BaseController < ApplicationController
  before_filter :load_customer

protected
  def load_customer
    @customer = Customer.find(params[:customer_id] || params[:id])
  rescue ActiveRecord::RecordNotFound
    render(:partial => 'customer_not_found', :layout => 'application', :status => :not_found)
  end
end

Wie Sie sehen, kann es ein wenig unübersichtlich werden, wenn Sie Ihre Bewerbung auf diese Weise gestalten. Außerdem werden die Routen am Ende sehr lang.

Wenn Ihre Datenbank so aufgebaut ist, dass die Datensätze ziemlich autonom sind und viele der Beziehungsinformationen aus ihnen abgeleitet werden können, dann brauchen Sie sich nicht unbedingt diese Mühe zu machen. Eine Bestellseite kann Verknüpfungen zu @order.customer bereitstellen, ohne dass customer_id im Pfad enthalten sein muss.

1voto

Overbryd Punkte 3981

Hm, ich stimme Ihnen zu, dass viele Bücher bei den Grundlagen anfangen und aufhören.

Aber wenn einem langweilig ist, sollte man sich hinsetzen und eine Idee entwickeln. Es macht immer am meisten Spaß, wenn man an einem echten Projekt arbeitet. Aus Beispielen und unwirklichen Szenarien zu lernen, mag eine Zeit lang helfen, aber irgendwann ist es an der Zeit, sich einer Herausforderung zu stellen.

Ich persönlich habe aufgehört, Bücher zu lesen, nachdem ich "Agile Webentwicklung mit Rails" beendet hatte. Dann habe ich angefangen, meine eigenen Fehler zu machen und aus ihnen zu lernen.

Theoretisch können Sie versuchen, sich auf jede "mittlere" oder "fortgeschrittene" Situation vorzubereiten, in die Sie geraten könnten.

Ehrlich gesagt, die Kämpfe, die ich mit Problemen ausgefochten habe, die mir im Weg standen, hatten nichts mit einem theoretischen Szenario zu tun, das man in Büchern findet. Ich musste mich hinsetzen, das Problem verfolgen, Backtraces lesen, darüber nachdenken, nach ähnlichen Problemen googeln, Tests schreiben... Das ist es, was mir wirklich geholfen hat, Erfahrungen zu sammeln.

Gehen Sie hinaus und finden oder entwickeln Sie eine Idee. Wenn Sie eine haben, schreiben Sie Tests und versuchen Sie, sie umzusetzen. Das wird Ihnen den Auftrieb geben, den Sie vielleicht suchen.

Note : http://github.com ist ein großartiger Ort, um Quellcode zu finden, den man sich ansehen und von dem man lernen kann.

0voto

nfm Punkte 18231

Werfen Sie einen Blick auf opensourcerails.de - Finden Sie eine Anwendung, die Sie interessiert, nehmen Sie die Quelle und gehen Sie sie Stück für Stück durch. Führen Sie sie lokal aus, finden Sie die interessanten Funktionen und sehen Sie sich dann den Code an, um zu sehen, wie er funktioniert.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X