2
class User < ActiveRecord::Base 
    has_many :followings, :as => :followable, :dependent => :destroy, :class_name => 'Follow' 
    has_many :follows, :as => :follower, :dependent => :destroy 

    define_index do 
    has follows.followable(:id), :as => :followable_id 
    has followings.follower(:id), :as => :follower_id 
    has follows.followable(:type), :as => :followable_type 
    has followings.follower(:type), :as => :follower_type 
    end 
end 
  1. question: Je ne peux pas la recherche par type (toujours tableau vide). Un bug? Je voudrais obtenir tous les utilisateurs où les adeptes sont de type «AAA».Rails + Pensée-Sphinx association polymorphique

    User.search '',: avec => {: follower_type => 'AAA'}

  2. question: Pourquoi dois-je inverser mon association pour obtenir le bon résultat (définition d'index): suit .followable (: id),: as =>: followable_id au lieu de followings.followable (: id),: as =>: followable_id Je voudrais avoir la liste des abonnés pour un utilisateur avec id = 1

    User.search: with => {: followable_id => 1} # Liste des abonnés pour un utilisateur avec id = 1

Thx!

Répondre

2

En ce qui concerne la première question - les filtres de chaînes ne fonctionnent pas dans Sphinx. Cela devrait changer dans le futur (avec Sphinx 1.10-beta, une fois que Thinking Sphinx supportera les nouvelles fonctionnalités), mais je ne sais pas quand cela arrivera (j'aimerai le dire bientôt, mais je ne peux rien promettre).

Il y a a workaround disponible, bien que ... mais gardez à l'esprit que vous manipulez un tableau de chaînes, donc c'est un niveau supplémentaire de complexité. En ce qui concerne la deuxième question, j'ai du mal à comprendre à quoi ressemble la base de données (noms déroutants, mais je manque de concentration en ce moment), alors je vais m'en tenir là pour le moment.

+0

@pat Thx pour votre logiciel espion! Pour la base de données s'il vous plaît voir ce plugin: https://github.com/xpepermint/acts_as_followable. Le modèle est copié à partir de là (pour la deuxième question). – xpepermint

+0

@pat La première question devrait aussi avoir "has" CRC32 (follows.followable_type) ',: as =>: type_executable,: type =>: entier "définition de l'index à droite? Ne fonctionne pas – xpepermint

+1

Essayez ': type =>: multi' - vous avez affaire à un tableau d'entiers. Et le filtre devrait être ': with => {: followable_type => 'AAA'.to_crc32}'. – pat

Questions connexes