2010-09-07 4 views
0

Je veux créer un modèle, "Whitelist" pour construire une liste d'utilisateurs que je ne veux pas afficher dans mon modèle principal, "Utilisateur".Comment créer une liste noire/liste blanche pour trouver des enregistrements de modèle Rails?

Exemple Contrôleur

 
def index 
    @users = User.find(:all) #These are to be filtered behind the scenes in the model 
end 

Exemple Modèle

 
class User ActiveRecord::Base 
has_many :whitelist 
def self.find 
    #Add something that will lookup items in the Whitelist model and filter those matches out of a find(:all) in the User model. 
end 

J'espère que cela a du sens. Merci pour l'aide.

+0

IMHO, vous n'avez pas besoin d'un nouveau modèle pour cette . juste une nouvelle méthode qui a la méthode where (si vous utilisez des rails 3) – corroded

+0

Malheureusement Im en utilisant des rails de repo d'Ubuntu qui ressemble à 2.2.3 – BioDevMike

+0

On dirait que la méthode where fonctionnera avec la méthode de portée que j'ai trouvé (Lien vers api est dans mon commentaire dans la réponse). Je dois juste améliorer les rails sans rien casser. – BioDevMike

Répondre

2

Vous pouvez utiliser un named_scope

Donc, dans votre modèle utilisateur:

named_scope :whitelist, :conditions => { :awesome => true } 

Et puis dans votre contrôleur:

User.whitelist 
+0

Votre réponse m'a conduit à http://apidock.com/rails/ActiveRecord/NamedScope/ClassMethods/scope qui, semble avoir une jointure et une condition où cela fonctionnerait. Je pense que j'ai besoin de mettre à jour mon rail d'installation pour l'utiliser mais, cela semble fonctionner. Merci pour l'aide. – BioDevMike

Questions connexes