2009-12-19 5 views
1

J'ai une application qui a un utilisateur et un modèle de projet. Je les relations suivantes entre ces 2 modèles:Rails routes personnalisées question

USER 
has_many :authorships , :foreign_key => :author_id 
has_many :moderatorships, :foreign_key => :moderator_id 
has_many :authored_projects, :through => :authorships, :class_name => 'Project' 
has_many :moderated_projects, :through => :moderatorships, :class_name => 'Project' 

Je veux avoir un itinéraire qui est/utilisateurs/id/favorite_projects et/utilisateurs/id/moderated_projects. Je suit dans mon routes.rb

map.resources :users,:has_many => [:authored_projects, :moderatored_projects], :shallow => true, :collection => {:logins => :get} 

Mais quand je lance des itinéraires de rake-je obtenir

user_authored_projects GET /users/:user_id/authored_projects(.:format)  {:controller=>"authored_projects", :action=>"index"} 

Mais, je n'ai pas vraiment un contrôleur authored_projects. Comment puis-je y parvenir?

Répondre

0

Je pense que vous voulez faire à la place dans vos itinéraires:

map.resources :users do |users| 
    users.resources :authored_projects, :controller => :projects 
    users.resources :moderated_projects, :controller => :projects 
end 

Mais je pense que vous voulez faire quelque chose d'autre, comme ceci:

map.resources :users, :member => [:authored_projects, :moderated_projects] 

Et puis créer les actions authored_projects et moderated_projects dans votre UsersController.

+0

Pas réellement. Je ne veux pas vraiment créer l'autre contrôleur. J'ai déjà le contrôleur de projet et dans la relation de modèle je précise que "authored_projects" sont en fait des projets. Je veux être capable de spécifier cela dans l'option: has_many => [] dans les routes. – Hock