Guest User

Untitled

a guest
Jun 19th, 2018
94
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.73 KB | None | 0 0
  1. t = Time.now
  2. items = Rating.all(:select => "content_id, viewer_id, viewer_type, rate").inject([]) do |mem, rating|
  3. item = rating.content_id.to_i
  4. user = "#{rating.viewer_type}_#{rating.viewer_id}".to_sym
  5. (mem[item] ||= {})[user] = rating.rate
  6. mem
  7. end
  8.  
  9. # iterate over items
  10. items.each_with_index do |pivot_users, pivot|
  11. next if pivot_users.blank?
  12. #iterate over the items with higher index
  13. items.from((pivot+1)..-1).each_with_index do |deviant_users, deviant|
  14. next if deviant_users.blank?
  15. common_users = pivot_users.keys + deviant_users.keys
  16. diff_sum = common_users.inject(0) { |sum, user| sum += pivot_users[user]-deviant_users[user] }
  17. mean_diff = diff_sum/common_users.size
  18. end
  19. end
  20. puts (Time.now-t)
Add Comment
Please, Sign In to add comment