Recentemente ho avuto una discussione con un mio amico che è anche uno sviluppatore di RoR. Abbiamo discusso su come i modelli di Rails dovrebbero essere gestiti. Personalmente mi piace lasciare nello spazio dei nomi predefinito solo i modelli root (ad es. Utente, Articolo, Bill ecc.) Ei modelli dipendenti vanno a un modulo (es. Utente :: Profilo, Utente :: Attività) con il nome della radice modello a cui sono associati.Modelli di nomi in un'applicazione Rails
D'altra parte, ho visto molti progetti che avevano come 100 modelli nello spazio dei nomi predefinito chiamati user_profile, user_activity e così via. A giudicare dallo sviluppo di Java (Spring), la comunità java tende ad organizzare classi nei pacchetti e a raggrupparli in modo logico, cosa che trovo molto allettante.
Quindi la domanda è: c'è qualche inconveniente nel raggruppare i modelli nei moduli (eccetto l'extra: nome_classe nella definizione di relazione) e ci sono motivi specifici per cui le persone di solito non lo fanno?
Non riesco a ricordare l'ultima volta che ho aperto il database explorer. Con il rubino viene naturale astrarre tali cose. Per quanto mi ricordo, Foo :: Bar genererà una tabella "foo_bar". L'unico inconveniente è che devi specificare a: class_name => Foo :: Bar in associazioni. Mi chiedo come un'applicazione di rota sia in grado di gestire un'applicazione complessa se incoraggia a mantenere tutti i modelli in una directory. Voglio dire, se l'app cresce troppo, il namespace è una parte del refactoring necessario o uno passa semplicemente a Java?) – FreeCandies
Di solito prendo l'approccio di usare il prefisso come una sorta di spazio dei nomi, così crei cose come UserProfile e UserActivity invece di profilo o attività. Questo porta a un tipo naturale di raggruppamento nell'elenco. È raro vedere un'applicazione con oltre 500 modelli che trarrebbe un vantaggio significativo dal namespace. Complicato è complicato. A volte è meglio essere onesti su quanto sia complessa la tua applicazione che provare e fingere che sia in realtà semplice seppellire la complessità e rendere più difficile trovare le cose. – tadman