2016-03-22 16 views
0

Also, ich versuche herauszufinden, wie Aggregatfelder in meinem Sphinx-Index haben. (Count, und AVG)Wie aggregierte Assoziationsfelder mit Denksphinx indexiert werden

Ich habe ein Modell namens business_profile, die einen has_many Verein business_feedbacks hat:

class BusinessProfile < ActiveRecord::Base 
    has_many :business_feedbacks 
    #... 
end 

Versuch Aggregatfelder für Zählung hinzuzufügen, und avg:

ThinkingSphinx::Index.define(:business_profile, with: :active_record, delta: ThinkingSphinx::Deltas::DatetimeDelta) do 
    # indexes ... fields 
    has 'COUNT(business_feedbacks.id)', as: :feedback_count 
    has 'AVG(business_feedbacks.recommend)', as: :feedback_recommend 
end 

Ich erhalte diesen Fehler, wenn ich versuche, meinen Index neu zu erstellen (Rake ts: rebuild):

Was kann ich tun, um diese Aggregatfelder zu meinem Index hinzuzufügen? Ich würde gerne in der Lage sein, die Ergebnisse nach feedback_count oder feedback_recommend zu sortieren.

Antwort

1

Weil Sie nicht auf Spalten beziehen direkt, müssen Sie den Typ manuell angeben:

has 'COUNT(business_feedbacks.id)',  as: :feedback_count,  type: :integer 
has 'AVG(business_feedbacks.recommend)', as: :feedback_recommend, type: :integer 

... oder wenn die Spalte empfehlen etwas anderes als eine ganze Zahl ist, können Sie die durchschnittliche Typ verändern entsprechend.