35

I am using Ruby on Rails 3 and I would like to handle models (classes) namespaces within namespaces. That is, if I have a namespace named NS1 and a "sub-namespace" of that namespace named NS2, I would like to handle models (classes) in NS2.

If I run a scaffold

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

it will generate following model files:

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

The models/ns1/articles.rb contains:

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

What is the models/ns1/articles.rb file? How and why can I use that? Have you advices about using that?

And, in general, what is "the best" way to handle "composed" classes in namespaces using Ruby on Rails?

1 Answer 1

31

The

models/ns1/articles.rb

is basically setting the table name prefix for all the model classes under that namespace. Thats its use. It's more DRY'ish to do in there (in a single file), rather than setting the prefix in every model class under that namespace.

I am not a big fan of using namespaces in my models. However you could refer to the following articles to gain a better understanding about using namespaces in modules.

Some alternatives to using namespaces in models

Hope this helps.

Sign up to request clarification or add additional context in comments.

2 Comments

What if you want to have a model named ns1? What do you do then?
why are you not a fan of namespaced models?

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.