2010-07-23 6 views
3

J'ai une auto-jointure à travers une table croisée dans une application sur laquelle je travaille comme ci-dessous. Cela fonctionne dans le sens où je peux dire @ current_user.clients et obtenir tous les clients. Cependant, je voudrais mettre en place une URL/clients où je peux lister tous les clients des utilisateurs actuels. Est-ce que quelqu'un sait comment je peux faire cela?Ruby on Rails route basée sur l'auto-jointure

J'ai essayé de mettre en place une ressource: client dans mes routes et un contrôleur de client, mais comme il n'y a pas de modèle de clients, il lance et erreur.

Répondre

0

Il ne devrait pas y avoir d'erreur.

# routes.rb 
map.resources :clients 

# clients_controller.rb 
class ClientsController < ApplicationController 
    def index 
    @clients = @current_user.clients 
    end 

    # other actions... 
end 

# clients index.html.erb 
<% @clients.each do |c| %> 
    <p><%= c.name %></p> 
<% end %> 
+0

Ok, j'ai réussi à le faire fonctionner. J'utilise CanCan pour l'autorisation basée sur les rôles et j'ai la méthode load_and_authorize_resource en haut du contrôleur qui doit supposer que chaque contrôleur a un modèle. Un comportement bizarre auquel je pense est que dans l'action d'index, je peux accéder à current_user, mais pas à @current_user, même si dans tous mes autres contrôleurs, j'utilise @current_user. Savez-vous pourquoi cela pourrait être? – John

+0

Peu importe, je pense que je l'ai compris. Les autres contrôleurs avaient un before_filter qui définissait la variable @current_user. – John