2010-09-29 45 views
0

Contact belongs_to status_contactsComment utiliser searchlogic pour rechercher une association belongs_to?

Je ne veux que les contacts pour lesquels aucune valeur n'a été affectée.

J'ai installé le plugin searchlogic.

J'ai essayé:

contacts = Contact.status_contact_null 

et a obtenu une erreur.

Comment puis-je comprendre comment utiliser les associations avec searchlogic, et comment puis-je l'utiliser pour cette recherche en particulier?

Répondre

1
Contact.status_contact_id_is(nil) 

devrait générer des requêtes SQL qui ressemble à ceci:

SELECT * FROM `contacts` WHERE (contacts.status_contact_id IS NULL) 

Searchlogic remplace Ruby nil pour de null SQL.

Vous pouvez faire l'inverse avec ne (non égale)

Contact.status_contact_id_ne(nil) 

Il y a un tas de bons exemples sur le github page for Searchlogic

+0

oh, je pensais quand j'ai vérifié la page hte github qu'elle comprenait les associations ? Il avait un exemple d'utilisateurs et d'ordres ... en quoi est-ce différent (par opposition à devoir appeler la clé étrangère?) – Angela

+0

Il comprend les associations, que vous pouvez voir en chaînant les méthodes dans la portée - par exemple. si 'status_contacts' a une colonne' name', 'Contact.status_contact_name_is (" Fred ")' fonctionnera. Mais quand la méthode existe sur le modèle lui-même (par exemple, 'status_contact_id'), il l'utilise à la place, ce qui est le seul moyen de faire fonctionner cette requête, vraiment. Vous pouvez écrire votre propre portée nommée pour la rendre plus lisible, si vous avez aimé – zetetic

+0

Je vois ... mais status_contact n'est pas une association? Même avec cette association, il a toujours besoin de la clé étrangère? J'ai de la difficulté à comprendre comment utiliser la logique de recherche - est-ce la seule exception? Toutes les associations, par définition, n'auraient-elles pas une clé étrangère? – Angela