Rails 4: organize rails models in sub path without namespacing models?

后端 未结 1 956
别那么骄傲
别那么骄傲 2020-11-28 05:22

Would it be possible to have something like this?

app/models/
app/models/users/user.rb
app/models/users/education.rb

The goal is to organiz

相关标签:
1条回答
  • 2020-11-28 05:37

    By default, Rails doesn't add subfolders of the models directory to the autoload path. Which is why it can only find namespaced models -- the namespace illuminates the subdirectory to look in.

    To add all subfolders of app/models to the autoload path, add the following to config/application.rb:

    config.autoload_paths += Dir[Rails.root.join("app", "models", "{*/}")]
    

    Or, if you have a more complex app/models directory, the above method of globing together all subfolders of app/models may not work properly. In which case, you can get around this by being a little more explicit and only adding the subfolders that you specify:

    config.autoload_paths += Rails.root.join("app", "models", "<my_subfolder_name1>")
    config.autoload_paths += Rails.root.join("app", "models", "<my_subfolder_name2>")
    

    UPDATE for Rails 4.1+

    As of Rails 4.1, the app generator doesn't include config.autoload_paths by default. So, note that the above really does belong in config/application.rb.

    UPDATE

    Fixed autoload path examples in the above code to use {*/} instead of {**}. Be sure to read muichkine's comment for details on this.

    0 讨论(0)
提交回复
热议问题