Well It appears that I got this one to work today, after browsing the TS
group and looking at more COUNT queries. I needed to add "has votes(:id),
:as => :vote_ids) first:
define_index do
has votes(:id), as: :vote_ids
has "COUNT(DISTINCT votes.id)", as: :rating_count, type: :integer
join votes
end
On Wednesday, November 7, 2012 2:19:09 PM UTC-5, Mike C. wrote:
>
> Thumbs_up generates a votes model:
>
> class Vote < ActiveRecord::Base
>
> scope :for_voter, lambda { |*args| where(["voter_id = ? AND voter_type =
> ?", args.first.id, args.first.class.name]) }
> scope :for_voteable, lambda { |*args| where(["voteable_id = ? AND
> voteable_type = ?", args.first.id, args.first.class.name]) }
> scope :recent, lambda { |*args| where(["created_at > ?", (args.first ||
> 2.weeks.ago)]) }
> scope :descending, order("created_at DESC")
>
> belongs_to :voteable, :polymorphic => true
> belongs_to :voter, :polymorphic => true
>
> attr_accessible :vote, :voter, :voteable
>
> # Comment out the line below to allow multiple votes per user.
> validates_uniqueness_of :voteable_id, :scope => [:voteable_type,
> :voter_type, :voter_id]
>
> end
>
> and a vote migration containing:
>
> create_table "votes", :force => true do |t|
> t.boolean "vote", :default => false
> t.integer "voteable_id", :null => false
> t.string "voteable_type", :null => false
> t.integer "voter_id"
> t.string "voter_type"
> t.datetime "created_at", :null => false
> t.datetime "updated_at", :null => false
> end
>
> I added this to my person model to filter by Most/Least amount of ratings:
>
> has_many :votes, as: :voteable
>
> define_index do
>
> has "COUNT(votes.id)", as: :rating, type: :integer
> join votes
>
> end
>
> Although it isn't filtering the results by the number of votes that person
> has correctly.
>
> The other issue is figuring out how to index the Highest and Lowest
> Rating. (AKA plusminus method in thumbs_up)
>
> plusminus = (votes_for - votes_against)
>
> votes_for is total votes that are equal to 1 for voteable_id and
> voteable_type
> votes_against is total votes that are equal to 0 for voteable_id and
> voteable_type
>
> Anyone able to make sense of this in sql for the attributes to index =)
>
> On Monday, November 5, 2012 10:56:18 PM UTC-5, Mike C. wrote:
>>
>> Anyone have experience with indexing vote ranks with the Thumbs_up
>> gem?<https://github.com/bouchard/thumbs_up>
>>
>> I'm trying to figure out these 4 attributes:
>>
>> has Highest Rating (the plusminus tally in gem) DESC
>> has Lowest Rating (the plusminus tally in gem) ASC
>> has Most Ratings (total amount of votes) DESC
>> has Least Ratings (total amount of votes) ASC
>>
>
--
You received this message because you are subscribed to the Google Groups
"Thinking Sphinx" group.
To view this discussion on the web visit
https://groups.google.com/d/msg/thinking-sphinx/-/SDTFBQML9nQJ.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/thinking-sphinx?hl=en.