2009-03-02 7 views
17

Depuis le début, Rails a eu des problèmes avec les modèles avec espace de noms. Au fil du temps, à peu près tout le monde a renoncé à l'utiliser. Moi-même inclus.Modèles nommés dans Rails: Quel est l'état de l'union?

Avec Rails 2.3, j'aimerais avoir une mise à jour sur la situation. Les questions spécifiques que j'ai à l'esprit sont:

  • d'abord, est-ce bon d'y aller?
  • nommer une table, quelle règle suivre?
  • associations, comment les déclarer avec le moins de verbosité? comment nommer les colonnes de clé étrangère?
  • automatiquement, cela fonctionne-t-il si vous placez les fichiers modèles dans un sous-répertoire correspondant à l'espace de noms? ou, comment nommer et où placer les fichiers?
  • génération, le générateur de modèles gère-t-il correctement et correctement les espaces de noms?
  • génération, que diriez-vous du générateur d'échafaudage, qui inclut des contrôleurs?
  • des incompatibilités/bizarreries dont il faut être conscient?
+0

Je me rends compte que je suis très paresseux en posant cette question, car je pourrais rapidement rechercher la plupart des réponses moi-même, mais je suis ici dans l'espoir que quelqu'un a déjà beaucoup souffert et veut le partager. – kch

+0

Je pense que c'est une bonne question. J'ai hâte de voir ce qui revient, car je suis un autre qui l'a voulu, essayé, senti la douleur et abandonné. –

+1

Cette question est assez ancienne maintenant. Je suis curieux de voir comment les choses se sont améliorées maintenant que Rails 4.0 est sorti. – Andrew

Répondre

14

Le meilleur article que j'ai vu sur le sujet est de Strictly Untyped. A ma connaissance 2.3 n'a pas résolu les problèmes, ce qui signifie qu'ils ne sont toujours pas fiables.

+0

quoi que ce soit avec des lolcats dans le titre doit être bon. vérifierai. – kch

+0

Le lien est cassé maintenant. Seriez-vous en mesure de fournir une mise à jour de cette réponse maintenant que Rails 4 est sorti? – Andrew

3

Nous avons récemment eu un grand débat à ce sujet au sein de notre société. Je pense qu'à la fin de la journée, nous avons pensé que si vous ne pouvez pas écrire des tables d'espaces de noms dans une base de données, cela n'a pas de sens de nommer les modèles. Nous nous sommes installés sur nos modèles préfixer (utilisateur, UserAddress, UserEmailAddresses) et de les mettre dans le répertoire des utilisateurs, puis en utilisant:

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

pour charger les modèles. Pour contrôler la verbosité dans nos modèles, nous le faisons souvent:

has_many :addresses, :class_name => "UserAddress" 

Lors de la génération, nous créons comme s'il n'y avait aucun espace de noms (script/generate modèle UserAddress) puis copier manuellement dans le répertoire de l'utilisateur.

Shrug. Je suppose qu'à la fin tout cela vous donne vraiment une structure de répertoire plus propre, ce qui est en fait plus de problèmes pour un utilisateur VIM comme moi, mais agréable pour TextMaters.

+0

Eh bien, en tant que TextMater je dois vous dire que je cmd + T pour aller aux fichiers, j'utilise rarement le navigateur de fichiers. Quoi qu'il en soit, cela est modérément utile, mais dites-vous que vous avez essayé les espaces de noms dans les rails 2.3 et que c'est toujours SOL? – kch

+0

J'utilise quelque chose de similaire à cmd + T dans VIM, et la bonne chose à propos de mettre les choses dans des dossiers est que vous pouvez faire "m/u /" et cmd + T va probablement se limiter à models/users /, ce qui est très utile (la plupart des utilisateurs de cmd + t ne se rendent pas compte que les barres obliques rétrécissent la liste par répertoire) – efalcao

+0

En réponse au reste de votre question, nous ne l'avons pas essayé en 2.3. En outre, je n'ai rien vu dans les changements 2.3 spécifiquement les modèles "verts" des espaces de noms. – efalcao

-2

Je resterais toujours loin de cela. Tout ce que je gagnerais (ce dont je ne suis pas sûr) serait définitivement perdu si l'on considère les tracas et la perte de brièveté et de clarté dans votre code.

Ma dernière application dispose de 87 ressources, et comprend des fonctionnalités administratives partout. Je ne vois aucun besoin de namespacing, à mon humble avis.

+0

Eh bien, certaines personnes travaillent mieux avec un espace de noms, d'autres s'en moquent. Vous pouvez toujours trouver des moyens de contourner cela, l'enfer, beaucoup de langues n'en ont pas. Malgré le besoin/les alternatives, c'est une question à laquelle il serait bon d'avoir une réponse. – kch

+2

Ceci est une déclaration générale à courte vue. Les raisons impérieuses pour les espaces de noms ne sont pas moins sur la quantité de modèles que leur parité. – gtd

+0

Attendez que votre application se développe et que vous essayiez d'obtenir rapidement de nouveaux développeurs pour apprendre comment fonctionne votre application et essayer de faire valoir cet argument. – jwg2s

Questions connexes