Non, ce n'est pas une mauvaise idée. Beaucoup de gens le faire et je ne pouvais pas vivre sans elle dans les applications de grande taille.
Il y a deux façons de le faire:
La première est de simplement déplacer vos modèles. Vous, cependant, ont à dire à Rails de charger le rétif modèles (comme elle ne sait pas où ils sont). Quelque chose comme ceci devrait faire l'affaire:
# In config/application.rb
module YourApp
class Application < Rails::Application
# Other config options
config.autoload_paths << Dir["#{Rails.root}/app/models/*"]
end
end
La première méthode est facile, mais n'est pas vraiment la meilleure façon. La deuxième façon consiste à namespacing vos modèles avec des groupes qu'ils sont dans. Cela signifie qu'au lieu d'avoir User
et UserGroup
et UserPermissions
, vous avez User
, User::Group
et User::Permission
.
Pour l'utiliser, générer un modèle comme ceci: rails generate model User::Group
. Rails de créer automatiquement tous les dossiers pour vous. Un avantage supplémentaire est que, avec cette approche, vous n'aurez pas à épeler le nom du modèle pour les associations au sein d'un espace de noms:
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
Vous pouvez spécifier toutefois, de nombreux niveaux de namespacing que vous voulez, donc User::Group::Permission
serait possible.