No, no es una mala idea. Mucha gente lo hace y no podría vivir sin él en aplicaciones grandes.
Hay dos maneras de hacerlo:
La primera es simplemente mover sus modelos. Sin embargo, tendrá que decirle a Rails que cargue los modelos caprichosos (ya que no sabrá dónde están). Algo como esto debe hacer el truco:
# In config/application.rb
module YourApp
class Application < Rails::Application
# Other config options
config.autoload_paths << Dir["#{Rails.root}/app/models/*"]
end
end
La primera manera es fácil, pero no es realmente la mejor manera. La segunda forma consiste en namespacing sus modelos con los grupos que se encuentran. Esto significa que en lugar de tener User
y UserGroup
y UserPermissions
, tiene User
, User::Group
y User::Permission
.
Para usar esto, genere un modelo como este: rails generate model User::Group
. Rails creará automáticamente todas las carpetas por usted. Un beneficio adicional es que con este enfoque, usted no tendrá que deletrear el nombre del modelo completo para asociaciones dentro de un espacio de nombres:
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
Puede especificar sin embargo muchos niveles de los espacios de nombre como desee, por lo que habría User::Group::Permission
posible.
Más de 100 modelos? ¿Es un gran proyecto? –