2009-11-25 8 views
2

J'ai une requête simple pour montrer aux utilisateurs qui sont actifs, mais de toute façon il montre toujours les utilisateurs inactifs. J'utilise le sphinx. La requête ressemble à:comment utiliser sphinx dans les rails et exclure les résultats basés sur une valeur de colonne

User.search keywords,:conditions=>conditions, :match_mode=>:boolean, :order =>sort_order.to_s, :page => page,:per_page =>per_page 

le hachage des conditions ressemble à ceci:

conditions = {:is_expired => false, :is_disabled => false,...} 

les condiitions comprennent:: is_expired => false, mais il va chercher les utilisateurs qui ont: is_expired = true.

Que dois-je faire pour récupérer uniquement les enregistrements qui n'ont pas expiré?

Répondre

1

J'ai changé le type de la colonne de booléen à nombre entier, et il a commencé à fonctionner! Edit: en fait, il a commencé à travailler localement, et non sur la production. J'ai finalement regardé la sortie de l'exécution de la commande RAILS_ENV = production rake thinking_sphinx: index et j'ai vu une ligne qui lisait quelque chose comme: ERREUR: index 'user_core': impossible de créer/path/to/application/production/user_core. spm: Autorisation refusée. Puis j'ai vu que l'autorisation de fichier était de "root root" au lieu de l'utilisateur qui exécute la commande d'index. En effet, une fois que le déployeur a déployé un "sudo su -" etc, les nouveaux fichiers créés étaient avec root en tant que créateur, etc. J'ai dû supprimer le fichier et il a commencé à fonctionner correctement après l'exécution de la commande index. Je ne suis pas sûr si maintenant je peux revenir du type de colonne entier à booléen cependant.

1

Assurez-vous d'indexer les méthodes is_expired et is_disabled. Toutes mes excuses si vous l'avez déjà fait.

Questions connexes