Это плохая идея делить модели на каталоги? - PullRequest
32 голосов
/ 07 января 2011

У меня более 100 моделей в моем приложении rails, и только для организации я делю их на папки, все еще находящиеся в основной папке моделей, просто чтобы упростить навигацию по проекту и просматривать файлы, которыеrelated.

Это плохая идея?Какой способ это сделать?

Ответы [ 2 ]

62 голосов
/ 07 января 2011

Нет, это неплохая идея. Многие люди делают это, и я не могу жить без этого в больших приложениях.

Есть два способа сделать это:

Первое - просто переместить свои модели. Вам, однако, придется сказать 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 и UserGroup и UserPermissions у вас есть User, User::Group и User::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

Вы можете указать сколько угодно уровней пространства имен, так что User::Group::Permission будет возможно.

16 голосов
/ 07 января 2011

Для 100 моделей это практически требование. 100 моделей шумно в одном каталоге.

Попробуйте, чтобы получить представление о Rails Way (tm)

rails new MultiDirectoryExample
cd MultiDirectoryExample
rails generate scaffold User::Photo description:string

Просмотр выходных данных скрипта и просмотр сгенерированных файлов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...