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