2010-10-05 24 views
3

J'ai un searchlogic qui cherche not_null sur une association qui peut se produire plusieurs fois, mais je veux seulement afficher une instance UNIQUE/DISTINCT de l'objet:Comment faire un searchlogic nommé scope return DISTINCT (non duplicates?)

Company.contact_emails_id_not_null 

Je ne veux qu'une seule entreprise, peu importe combien de contact_emails sont associés à cette société: par =>: contacts

Répondre

2

rails 3: En supposant

Company.contact_emails_id_not_null.select("distinct name_of_your_field") 

Si rails 2.3.x (S'il vous plaît pardonnez-moi si elle se révèle être faux, je ne suis pas sûr)

Company.contact_emails_id_not_null.find(:all, :select => "distinct name_of_your_field") 

name_of_your_field peut également être * pour inclure tous les champs. Faites-moi savoir si cela peut vous aider.

+0

Salut, je suis sur rails 2 .... donc je dois encore utiliser la méthode find même avec les portées searchlogic? – Angela

+0

ne sélectionne pas besoin du nom d'une base de données .... Je veux montrer les noms de sociétés distinctes .... alors quel champ devrais-je utiliser? – Angela

+0

Il ne semble pas fonctionner ... il semble montrer plusieurs ID d'entreprise .... – Angela

1

Dans Rails 2.3.11 cela a fonctionné pour moi ...

@vendor_search = Vendor.searchlogic 
@vendors = @vendor_search.paginate({ 
            :page => page, 
            :per_page => 32, 
            :order => 'name', 
            :select => 'DISTINCT vendors.*' 
           }) 

Il y a des informations spécifiques au projet supplémentaire là-bas, mais la partie pertinente est ... ce

:select => 'DISTINCT vendors.*' 
+0

Merci +1 pour aider les gens du futur =) –