2009-03-02 8 views
17

Fin dall'inizio, Rails ha riscontrato problemi con i modelli con spazi dei nomi. Col passare del tempo, quasi tutti hanno rinunciato a usarlo. Me incluso.Modelli con spazi linguistici in Rails: qual è lo stato dell'unione?

Con Rails 2.3 out, vorrei un aggiornamento sulla situazione. Le domande specifiche che ho in mente sono:

  • prima di tutto, è bello andare?
  • denominazione della tabella, quale regola seguire?
  • associazioni, come dichiararle con la minima verbosità? come nominare le colonne chiave estere?
  • auto-richiesta, funziona se si mettono i file del modello in una sottodir corrispondente allo spazio dei nomi? o, come nominare e dove posizionare i file?
  • generazione, il generatore del modello gestisce gli spazi dei nomi correttamente e correttamente?
  • generazione, che ne dici del generatore di scaffold, che include i controller?
  • eventuali incompatibilità/bizzarrie di cui si dovrebbe essere a conoscenza?
+0

Mi rendo conto di essere pigramente pigro nel fare questa domanda, dato che potrei rapidamente cercare la maggior parte delle risposte, ma sono qui nella speranza che qualcuno abbia già sofferto molto e voglia condividerlo. – kch

+0

Penso che sia una buona domanda. Non vedo l'ora di vedere cosa ritorna in quanto sono un altro che lo voleva, lo provò, sentì il dolore e rinunciò. –

+1

Questa domanda è piuttosto vecchia ora. Sono curioso di sapere come sono migliorate le cose ora che Rails 4.0 è uscito. – Andrew

risposta

14

La migliore annotazione che ho visto sul problema è da Strictly Untyped. A mia conoscenza, 2.3 non ha risolto alcun problema, il che significa che sono ancora inaffidabili.

+0

qualsiasi cosa con lolcats nel titolo deve essere buona. controllerò. – kch

+0

Il link è rotto ora. Sareste in grado di fornire un aggiornamento a questa risposta ora che Rails 4 è fuori? – Andrew

3

Recentemente abbiamo avuto un grande dibattito su questo all'interno della nostra azienda. Penso che alla fine della giornata, abbiamo capito che se non è possibile tabelle di spazi dei nomi all'interno di un database, non ha senso per lo spazio dei nomi dei modelli. Abbiamo optato per anteponendo i nostri modelli (Utente, UserAddress, UserEmailAddresses) e metterli nella directory degli utenti, quindi utilizzando:

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

per caricare i modelli. Per controllare il livello di dettaglio nei nostri modelli, facciamo questo di frequente:

has_many :addresses, :class_name => "UserAddress" 

Quando si genera, si crea come se non ci fosse spazio dei nomi (lo script/generate modello UserAddress) quindi copiare manualmente nella directory utente.

Shrug. Immagino che alla fine tutto ciò ti dia davvero una struttura di directory più pulita, che in realtà è più un problema per un utente VIM come me, ma piacevole per TextMaters.

+0

Bene davvero, come TextMater devo dirti che I cmd + T per andare ai file, raramente utilizzo il browser dei file. Ad ogni modo, questo è moderatamente utile, ma stai dicendo che hai provato il namespacing in rail 2.3 ed è ancora SOL? – kch

+0

Io uso qualcosa di simile a cmd + T in VIM, e la cosa bella di mettere cose nelle cartelle è che puoi fare "m/u /" e cmd + T probabilmente restringerà a modelli/utenti /, che è molto utile (la maggior parte degli utenti di cmd + t non si rende conto che le barre restringono l'elenco per directory) – efalcao

+0

In risposta al resto della domanda, non l'abbiamo provato in 2.3. Inoltre, non ho visto nulla nelle modifiche del 2.3 che specificatamente modelli "a luci verdi". – efalcao

-2

Vorrei starne lontano. Qualsiasi cosa guadagnata (che non sono sicuro di cosa sarebbe onestamente) andrebbe sicuramente persa se si considera il fastidio e la perdita di brevità e chiarezza nel codice.

La mia ultima app ha 87 risorse e include funzioni amministrative dappertutto. Non vedo bisogno di namespace, IMHO.

+0

Bene, alcune persone lavorano meglio con il namespace, ad alcuni non importa. Puoi sempre trovare modi per aggirarlo, l'inferno, molte lingue non ne hanno. Nonostante la necessità/le alternative, è una domanda che sarebbe utile avere una risposta. – kch

+2

Questa è una dichiarazione di cortometraggi miope. Ragioni convincenti per gli spazi dei nomi non sono inferiori alla quantità di modelli rispetto alla loro parità. – gtd

+0

Attendi fino a quando l'applicazione non si espande e provi a convincere i nuovi sviluppatori a imparare rapidamente come funziona la tua applicazione e a provare a fare questo argomento. – jwg2s