web-dev-qa-db-fra.com

Gestion des modèles d'espace de noms (classes) dans l'espace de noms

J'utilise Ruby on Rails 3 et je voudrais gérer les espaces de noms des modèles (classes) dans les espaces de noms. Autrement dit, si j'ai un espace de noms nommé - NS1 et un "sous-espace de noms" de cet espace de noms nommé NS2, je voudrais gérer des modèles (classes) dans NS2.

Si je lance un échafaudage

Rails generate scaffold ns1/ns2/Article id:integer title:string

il générera les fichiers modèles suivants:

models/ns1/ns2/article.rb file
models/ns1/articles.rb

Le models/ns1/articles.rb contient:

module Ns1::Articles
  def self.table_name_prefix
    'ns1_articles_'
  end
end

Quel est le models/ns1/articles.rb fichier? Comment et pourquoi puis-je l'utiliser? Avez-vous des conseils à ce sujet?

Et, en général, quelle est la "meilleure" façon de gérer les classes "composées" dans les espaces de noms en utilisant Ruby on Rails?

33
user502052

Le

models/ns1/articles.rb

définit essentiellement le préfixe du nom de table pour toutes les classes de modèle sous cet espace de noms. C'est son utilisation. C'est plus DRY à faire là-dedans (dans un seul fichier), plutôt que de définir le préfixe dans chaque classe de modèle sous cet espace de noms.

Je ne suis pas un grand fan de l'utilisation des espaces de noms dans mes modèles. Cependant, vous pouvez vous référer aux articles suivants pour mieux comprendre l'utilisation des espaces de noms dans les modules.

Quelques alternatives à l'utilisation des espaces de noms dans les modèles

J'espère que cela t'aides.

30
thekindofme