2010-06-02 19 views
0

J'ai une structure d'héritage de table unique dans mon application, par laquelle Admins et Mods étendent une classe User. Le tableau utilise une valeur discriminante de sorte que chaque enregistrement a un type de soit « admin » ou « mod »Obtention d'un datamapper pour ignorer 'type' lors de l'interrogation de la base de données

Quand il s'agit de trouver un utilisateur (sur login) Je voudrais écrire:

current_user = User.find(params[:email => email]) 

Cependant, cela crée SQL qui comprend

SELECT ...... WHERE ("type" IN ('User') AND ..... 

cela signifie que le dossier ne peut pas être trouvé. Cependant, si je tape

current_user = Admin.find(params[:email => email]) 

Je reçois l'utilisateur (s'il s'agit d'un administrateur).

J'ai aussi essayé ce qui suit sans succès depuis le « type » IN (« User ») est toujours créé:

current_user = User.first(:email => email, :type => [Admin, Mod]) 

Merci d'avance pour toute aide sur ce

Répondre

0

Je pense il devrait être

current_user = User.first(:email => email, :type => ['Admin', 'Mod']) 
+0

Peur pas. Le sql qui en résulte ressemble à: SELECT ..... FROM "utilisateurs" WHERE ("type" IN ('Utilisateur') ET "type" IN ('Admin', 'Mod') ET "email" =. ...... – Ger