将模型划分为目录是不是一个坏主意?

raf*_*mvc 32 ruby activerecord ruby-on-rails ruby-on-rails-3

我的rails应用程序中有100多个模型,只是为了组织,我将它们分成文件夹,所有这些仍然在主模型文件夹下,只是为了更简单地浏览项目并查看相关的文件.

这是一个坏主意吗?rails的方法是什么?

von*_*rad 62

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

有两种方法:

首先是移动你的模型.但是,您必须告诉Rails加载任意模型(因为它不知道它们在哪里).像这样的东西应该做的伎俩:

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

    config.autoload_paths << Dir["#{Rails.root}/app/models/*"]
  end
end
Run Code Online (Sandbox Code Playgroud)

第一种方法很简单,但并不是最好的方法.第二种方法涉及使用他们所在的组来命名您的模型.这意味着,而不是拥有User和,UserGroup而且UserPermissions,您拥有User,User::GroupUser::Permission.

要使用它,请生成如下模型:rails generate model User::Group.Rails会自动为您创建所有文件夹.另一个好处是,使用这种方法,您不必拼出命名空间内关联的完整模型名称:

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
Run Code Online (Sandbox Code Playgroud)

您可以根据需要指定多个级别的命名空间,这样User::Group::Permission就可以了.


pat*_*ent 16

对于100个型号,它几乎是一个要求.100个型号在一个目录中有噪音.

试试这个来了解Rails Way(tm)

rails new MultiDirectoryExample
cd MultiDirectoryExample
rails generate scaffold User::Photo description:string
Run Code Online (Sandbox Code Playgroud)

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