0

J'ai une application rails où Users peut créer Programs et d'autres choses encore à venir, nous dirons Plans (hypothétiquement).Rails routes avec relations polymorphes et propriétaires

Users peut également likePrograms et Plans. (Comme est polymorphique)

Je suis en train de trouver des itinéraires afin que je puisse voir le Programs un User crée, toutes les choses Userlikes, ou tout simplement Programs ou juste Plans un Userlikes. J'ai ces routes, mais cela ne semble pas être juste.

resources :users, :only => [:index,:show] do 
    resources :programs, :only => [:index] 
    resources :likes, :only => [:index] do 
     resources :programs, :only => [:index] 
    end 
end 

La route pour programs qu'un userlikes nécessite une URL comme: utilisateurs/user_id/aime/like_id/programme.

Comment créer une URL comme: users/user_id/likes/programs et obtenir tous les programmes qui me plaisent.

J'utilise le Socialization Gem qui a une méthode pour "likeables_relation (Class)" qui retourne une relation de n'importe quelle classe est demandée. J'ai juste besoin d'aide pour le routage.

+0

Qu'est-ce que vos modèles ressemblent, et vous vous un a beaucoup de Appartient à many polymorphique droit? Vous pourriez finir par devoir déclarer le chemin à l'ancienne, car un polymorphisme a beaucoup de caractère n'est pas standard. – rovermicrover

Répondre

1

J'ai juste essayé les routes suivantes:

resources :users, :only => [:index,:show] do 
    resources :programs, :only => [:index] 
    resources :likes, :only => [:index] do 
    collection do 
     get :programs 
    end 
    end 
end 

et

http://localhost:3000/users/1/likes/programs 

fonctionne très bien.

Il a fallu ajouter une nouvelle action 'programmes' à la classe LikesController.

C'est ce que les routes rake retourne:

programs_user_likes GET /users/:user_id/likes/programs(.:format) likes#programs 
+0

Fonctionne assez bien pour moi. Merci! – dewyze