Ruby on rails 把模型分成目录是个坏主意吗?

Ruby on rails 把模型分成目录是个坏主意吗?,ruby-on-rails,ruby,activerecord,ruby-on-rails-3,Ruby On Rails,Ruby,Activerecord,Ruby On Rails 3,我的rails应用程序中有100多个模型,为了便于组织,我将它们划分为多个文件夹,所有这些文件夹仍位于主模型文件夹下,以便更轻松地在项目中导航并查看相关文件 这是个坏主意吗?rails是如何做到这一点的?对于100个型号,这实际上是一个要求。一个目录中有100个模型存在噪音 试着了解一下Rails Way(tm) 观看脚本输出并查看生成的文件。不,这不是一个坏主意。很多人都这样做,我无法在大型应用程序中没有它 有两种方法可以做到这一点: 首先是移动模型。但是,您必须告诉Rails加载任性模型(因

我的rails应用程序中有100多个模型,为了便于组织,我将它们划分为多个文件夹,所有这些文件夹仍位于主模型文件夹下,以便更轻松地在项目中导航并查看相关文件


这是个坏主意吗?rails是如何做到这一点的?

对于100个型号,这实际上是一个要求。一个目录中有100个模型存在噪音

试着了解一下Rails Way(tm)


观看脚本输出并查看生成的文件。

不,这不是一个坏主意。很多人都这样做,我无法在大型应用程序中没有它

有两种方法可以做到这一点:

首先是移动模型。但是,您必须告诉Rails加载任性模型(因为它不知道它们在哪里)。像这样的事情应该可以做到:

# In config/application.rb
module YourApp
  class Application < Rails::Application
    # Other config options

    config.autoload_paths << Dir["#{Rails.root}/app/models/*"]
  end
end

您可以根据需要指定任意多个级别的名称空间,这样就可以使用
User::Group::Permission

100多个型号?这是一个大项目吗?您不必将子目录添加到加载路径,因为应用程序/模型已经存在。通过引用嵌套模型,例如
User::Group
,Rails将通过查看这些路径自动加载它。所有
app
常量都在生产模式下加载。@Ryan是的,如果您为模型命名名称空间。但是,如果不给它们命名,但仍将它们放在子文件夹中,并且不将路径添加到
config。自动加载路径
,它们不会加载。
# In config/application.rb
module YourApp
  class Application < Rails::Application
    # Other config options

    config.autoload_paths << Dir["#{Rails.root}/app/models/*"]
  end
end
class User < ActiveRecord::Base
  belongs_to :group # Rails will detect User::Group as it's in the same namespace
end

class User::Group < ActiveRecord::Base
  has_many :users
end