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/-/IhZ6jiSHx6oJ.
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.