2009-03-02 8 views
17

Seit dem Anfang hatte Rails Probleme mit Namespace-Modellen. Mit der Zeit haben so ziemlich alle es aufgegeben. Mich eingenommen.Namensspezifische Modelle in Rails: Wie ist der Status der Union?

Mit Rails 2.3 heraus, möchte ich ein Update über die Situation. Spezifische Fragen, die ich habe, sind:

  • erstens, ist es gut zu gehen?
  • Tabellenname, welche Regel soll folgen?
  • Assoziationen, wie man sie mit der geringsten Ausführlichkeit deklariert? Wie benennt man Fremdschlüsselspalten?
  • automatisch erforderlich, funktioniert es, wenn Sie die Modelldateien in ein Unterverzeichnis einfügen, das dem Namespace entspricht? oder, wie kann ich benennen und wo finde ich die Dateien?
  • Generation, behandelt der Modellgenerator Namespaces erfolgreich und korrekt?
  • Generation, wie wäre es mit dem Gerüst Generator, der Controller enthält?
  • alle Unverträglichkeiten, die man beachten sollte?
+0

Mir ist klar, dass ich sehr faul bin, diese Frage zu stellen, da ich die meisten Antworten selbst schnell recherchieren kann, aber ich bin hier in der Hoffnung, dass jemand schon viel Schmerz durchgemacht hat und ihn teilen möchte. – kch

+0

Ich denke, es ist eine gute Frage. Ich freue mich darauf zu sehen, was zurückkommt, da ich ein anderer bin, der es wollte, es versuchte, den Schmerz fühlte und aufgab. –

+1

Diese Frage ist jetzt ziemlich alt. Ich bin gespannt, wie sich die Dinge jetzt verbessert haben, seit Rails 4.0 draußen ist. – Andrew

Antwort

14

Die beste Beschreibung, die ich zu diesem Thema gesehen habe, ist von Strictly Untyped. Meiner Kenntnis nach hat 2.3 keine Probleme gelöst, was bedeutet, dass sie immer noch unzuverlässig sind.

+0

alles mit lolcats im titel muss gut sein. werde prüfen. – kch

+0

Die Verbindung ist jetzt unterbrochen. Können Sie diese Antwort jetzt aktualisieren, wenn Rails 4 nicht mehr verfügbar ist? – Andrew

3

Wir hatten kürzlich eine große Debatte darüber in unserem Unternehmen. Ich denke, am Ende des Tages haben wir festgestellt, dass es keinen Sinn macht, die Modelle mit Namespaces zu versehen, wenn Sie Namespace-Tabellen in einer Datenbank nicht finden können. Wir ließen uns unsere Modelle auf prefixing (Benutzer, useraddress, UserEmailAddresses) und in das Benutzerverzeichnis setzen, dann mit:

config.load_paths << "#{RAILS_ROOT}/app/models/users" 

die Modelle zu laden. Um die Ausführlichkeit in unseren Modellen zu steuern, tun wir dies häufig:

has_many :addresses, :class_name => "UserAddress" 

Bei der Generierung, schaffen wir es, als gäbe es keinen Namensraum war (script/generieren Modell useraddress), dann kopieren Sie sie manuell in das Benutzerverzeichnis.

Shrug. Ich schätze, am Ende gibt dir das alles eine sauberere Verzeichnisstruktur, was für einen VIM-Benutzer wie mich eher Ärger bedeutet, aber für TextMaters.

+0

Naja, wirklich, als TextMater muss ich dir sagen, dass ich per cm + T zu Dateien gehe, verwende ich selten den Dateibrowser. Wie auch immer, das ist einigermaßen hilfreich, aber sagst du, dass du in Rails 2.3 Namespace probiert hast und es immer noch SOL ist? – kch

+0

Ich benutze etwas ähnliches wie cmd + T in VIM, und das Schöne daran, Dinge in Ordner zu legen, ist, dass Sie "m/u /" und cmd + T wahrscheinlich auf Modelle/Benutzer/eingrenzen können, was sehr hilfreich ist (Die meisten cmd + t Benutzer erkennen nicht, dass Schrägstriche die Liste nach Verzeichnis eingrenzen) – efalcao

+0

Als Antwort auf den Rest Ihrer Frage haben wir es in 2.3 nicht versucht. Darüber hinaus habe ich nichts in den 2.3 Änderungen gesehen, die speziell "grüne Lichter" namespaced Modelle. – efalcao

-2

Ich würde immer noch davon weg bleiben. Alles, was gewonnen wurde (was ich nicht sicher bin, was das wirklich wäre) würde definitiv verloren gehen, wenn man den Ärger und den Verlust von Kürze und Klarheit in Ihrem Code in Betracht zieht.

Meine neueste App verfügt über 87 Ressourcen und enthält administrative Funktionen überall. Ich sehe keine Notwendigkeit für Namespace, IMHO.

+0

Nun, manche Leute arbeiten besser mit Namespacing, manche kümmern sich nicht darum. Du kannst immer Wege finden, verdammt, viele Sprachen haben keine. Trotz der Notwendigkeit/Alternativen, ist es eine Frage, die gut wäre, eine Antwort zu haben. – kch

+2

Dies ist eine kurzsichtige Pauschalaussage. Zwingende Gründe für Namespaces sind nicht weniger als die Anzahl der Modelle als ihre Parität. – gtd

+0

Warten Sie, bis sich Ihre Anwendung erweitert hat und Sie versuchen, neue Entwickler schnell zu informieren, wie Ihre Anwendung funktioniert, und versuchen Sie, dieses Argument zu formulieren. – jwg2s