| Path: | lib/algorithms/rank/rsvd/rsvd_test.rb |
| Last Update: | Sat Jul 11 12:53:13 -0400 2009 |
# File lib/algorithms/rank/rsvd/rsvd_test.rb, line 8
8: def make_vote_data(question_id)
9: ActiveRecord::Base.establish_connection(
10: :adapter => "mysql",
11: :host => "localhost",
12: :username => "princeton",
13: :password => "princeton",
14: :database => "pairwise"
15: )
16: result = ActiveRecord::Base.connection.execute(
17: "SELECT items_votes.item_id AS winner_id, items_prompts.item_id AS
18: loser_id, votes.tracking FROM votes INNER JOIN prompts ON (prompts.id=votes.prompt_id
19: AND prompts.question_id=#{question_id}) INNER JOIN items_votes ON
20: (items_votes.vote_id=votes.id) INNER JOIN items_prompts ON
21: items_prompts.prompt_id=prompts.id AND items_prompts.item_id!=
22: items_votes.item_id"
23: )
24: votes = {}
25: visits = []
26: items = []
27: # user votes.tracking to distinguish visitors
28: while rec = result.fetch_hash
29: winner_id, loser_id = rec['winner_id'], rec['loser_id']
30: for id in [winner_id, loser_id]
31: items << id unless items.include?(id)
32: end
33: winner = items.index(winner_id)
34: loser = items.index(loser_id)
35:
36: tracking = rec['tracking']
37: unless visits.include?(tracking)
38: votes[visits.length] = []
39: visits << tracking
40: end
41: visit = visits.index(tracking)
42: votes[visit] << winner << loser
43: end
44: result.free
45: [votes, visits, items]
46: end