Нет, это неплохая идея. Многие люди это делают, и я не мог жить без него в больших приложениях.
Есть два способа сделать это:
Первым является просто переместить свои модели. Вы, однако, должны будете сказать 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
будет возможное.
Более 100 моделей? Это большой проект? –