edgarjs / ajaxful-rating

Provides a simple way to add rating functionality to your application.
http://rdoc.info/projects/edgarjs/ajaxful-rating
418 stars 127 forks source link

Unnecessary queries for star_tag #60

Closed nathancolgate closed 12 years ago

nathancolgate commented 12 years ago

When a rateable object has :allow_update set to true, the star_tag method doesn't need to check to see if the object has already been rated.

I was seeing a lot of extraneous database calls when I was logged in, especially on my rateable#index page:

  Rate Load (0.6ms)  SELECT "rates".* FROM "rates" WHERE "rates"."rateable_id" = 756 AND "rates"."rateable_type" = 'Song' AND "rates"."dimension" = 'enjoyment' AND "rates"."rater_id" = 1 LIMIT 1
  CACHE (0.0ms)  SELECT "rates".* FROM "rates" WHERE "rates"."rateable_id" = 756 AND "rates"."rateable_type" = 'Song' AND "rates"."dimension" = 'enjoyment' AND "rates"."rater_id" = 1 LIMIT 1
  CACHE (0.0ms)  SELECT "rates".* FROM "rates" WHERE "rates"."rateable_id" = 756 AND "rates"."rateable_type" = 'Song' AND "rates"."dimension" = 'enjoyment' AND "rates"."rater_id" = 1 LIMIT 1
  CACHE (0.0ms)  SELECT "rates".* FROM "rates" WHERE "rates"."rateable_id" = 756 AND "rates"."rateable_type" = 'Song' AND "rates"."dimension" = 'enjoyment' AND "rates"."rater_id" = 1 LIMIT 1
  CACHE (0.0ms)  SELECT "rates".* FROM "rates" WHERE "rates"."rateable_id" = 756 AND "rates"."rateable_type" = 'Song' AND "rates"."dimension" = 'enjoyment' AND "rates"."rater_id" = 1 LIMIT 1
  Rate Load (0.6ms)  SELECT "rates".* FROM "rates" WHERE "rates"."rateable_id" = 755 AND "rates"."rateable_type" = 'Song' AND "rates"."dimension" = 'enjoyment' AND "rates"."rater_id" = 1 LIMIT 1
  CACHE (0.0ms)  SELECT "rates".* FROM "rates" WHERE "rates"."rateable_id" = 755 AND "rates"."rateable_type" = 'Song' AND "rates"."dimension" = 'enjoyment' AND "rates"."rater_id" = 1 LIMIT 1
  CACHE (0.0ms)  SELECT "rates".* FROM "rates" WHERE "rates"."rateable_id" = 755 AND "rates"."rateable_type" = 'Song' AND "rates"."dimension" = 'enjoyment' AND "rates"."rater_id" = 1 LIMIT 1
  CACHE (0.0ms)  SELECT "rates".* FROM "rates" WHERE "rates"."rateable_id" = 755 AND "rates"."rateable_type" = 'Song' AND "rates"."dimension" = 'enjoyment' AND "rates"."rater_id" = 1 LIMIT 1
  CACHE (0.0ms)  SELECT "rates".* FROM "rates" WHERE "rates"."rateable_id" = 755 AND "rates"."rateable_type" = 'Song' AND "rates"."dimension" = 'enjoyment' AND "rates"."rater_id" = 1 LIMIT 1
  Rate Load (0.4ms)  SELECT "rates".* FROM "rates" WHERE "rates"."rateable_id" = 752 AND "rates"."rateable_type" = 'Song' AND "rates"."dimension" = 'enjoyment' AND "rates"."rater_id" = 1 LIMIT 1
  CACHE (0.0ms)  SELECT "rates".* FROM "rates" WHERE "rates"."rateable_id" = 752 AND "rates"."rateable_type" = 'Song' AND "rates"."dimension" = 'enjoyment' AND "rates"."rater_id" = 1 LIMIT 1
  CACHE (0.0ms)  SELECT "rates".* FROM "rates" WHERE "rates"."rateable_id" = 752 AND "rates"."rateable_type" = 'Song' AND "rates"."dimension" = 'enjoyment' AND "rates"."rater_id" = 1 LIMIT 1
  CACHE (0.0ms)  SELECT "rates".* FROM "rates" WHERE "rates"."rateable_id" = 752 AND "rates"."rateable_type" = 'Song' AND "rates"."dimension" = 'enjoyment' AND "rates"."rater_id" = 1 LIMIT 1
  CACHE (0.0ms)  SELECT "rates".* FROM "rates" WHERE "rates"."rateable_id" = 752 AND "rates"."rateable_type" = 'Song' AND "rates"."dimension" = 'enjoyment' AND "rates"."rater_id" = 1 LIMIT 1
  Rate Load (0.3ms)  SELECT "rates".* FROM "rates" WHERE "rates"."rateable_id" = 762 AND "rates"."rateable_type" = 'Song' AND "rates"."dimension" = 'enjoyment' AND "rates"."rater_id" = 1 LIMIT 1
  CACHE (0.0ms)  SELECT "rates".* FROM "rates" WHERE "rates"."rateable_id" = 762 AND "rates"."rateable_type" = 'Song' AND "rates"."dimension" = 'enjoyment' AND "rates"."rater_id" = 1 LIMIT 1
  CACHE (0.0ms)  SELECT "rates".* FROM "rates" WHERE "rates"."rateable_id" = 762 AND "rates"."rateable_type" = 'Song' AND "rates"."dimension" = 'enjoyment' AND "rates"."rater_id" = 1 LIMIT 1
  CACHE (0.0ms)  SELECT "rates".* FROM "rates" WHERE "rates"."rateable_id" = 762 AND "rates"."rateable_type" = 'Song' AND "rates"."dimension" = 'enjoyment' AND "rates"."rater_id" = 1 LIMIT 1
  CACHE (0.0ms)  SELECT "rates".* FROM "rates" WHERE "rates"."rateable_id" = 762 AND "rates"."rateable_type" = 'Song' AND "rates"."dimension" = 'enjoyment' AND "rates"."rater_id" = 1 LIMIT    
  Rate Load (0.4ms)  SELECT "rates".* FROM "rates" WHERE "rates"."rateable_id" = 754 AND "rates"."rateable_type" = 'Song' AND "rates"."dimension" = 'enjoyment' AND "rates"."rater_id" = 1 LIMIT 1
  CACHE (0.0ms)  SELECT "rates".* FROM "rates" WHERE "rates"."rateable_id" = 754 AND "rates"."rateable_type" = 'Song' AND "rates"."dimension" = 'enjoyment' AND "rates"."rater_id" = 1 LIMIT 1
  CACHE (0.0ms)  SELECT "rates".* FROM "rates" WHERE "rates"."rateable_id" = 754 AND "rates"."rateable_type" = 'Song' AND "rates"."dimension" = 'enjoyment' AND "rates"."rater_id" = 1 LIMIT 1
  CACHE (0.0ms)  SELECT "rates".* FROM "rates" WHERE "rates"."rateable_id" = 754 AND "rates"."rateable_type" = 'Song' AND "rates"."dimension" = 'enjoyment' AND "rates"."rater_id" = 1 LIMIT 1
  CACHE (0.0ms)  SELECT "rates".* FROM "rates" WHERE "rates"."rateable_id" = 754 AND "rates"."rateable_type" = 'Song' AND "rates"."dimension" = 'enjoyment' AND "rates"."rater_id" = 1 LIMIT 1
  Rate Load (0.4ms)  SELECT "rates".* FROM "rates" WHERE "rates"."rateable_id" = 753 AND "rates"."rateable_type" = 'Song' AND "rates"."dimension" = 'enjoyment' AND "rates"."rater_id" = 1 LIMIT 1
  CACHE (0.0ms)  SELECT "rates".* FROM "rates" WHERE "rates"."rateable_id" = 753 AND "rates"."rateable_type" = 'Song' AND "rates"."dimension" = 'enjoyment' AND "rates"."rater_id" = 1 LIMIT 1
  CACHE (0.0ms)  SELECT "rates".* FROM "rates" WHERE "rates"."rateable_id" = 753 AND "rates"."rateable_type" = 'Song' AND "rates"."dimension" = 'enjoyment' AND "rates"."rater_id" = 1 LIMIT 1
  CACHE (0.0ms)  SELECT "rates".* FROM "rates" WHERE "rates"."rateable_id" = 753 AND "rates"."rateable_type" = 'Song' AND "rates"."dimension" = 'enjoyment' AND "rates"."rater_id" = 1 LIMIT 1
  CACHE (0.0ms)  SELECT "rates".* FROM "rates" WHERE "rates"."rateable_id" = 753 AND "rates"."rateable_type" = 'Song' AND "rates"."dimension" = 'enjoyment' AND "rates"."rater_id" = 1 LIMIT 1
  Rate Load (0.6ms)  SELECT "rates".* FROM "rates" WHERE "rates"."rateable_id" = 763 AND "rates"."rateable_type" = 'Song' AND "rates"."dimension" = 'enjoyment' AND "rates"."rater_id" = 1 LIMIT 1
  CACHE (0.0ms)  SELECT "rates".* FROM "rates" WHERE "rates"."rateable_id" = 763 AND "rates"."rateable_type" = 'Song' AND "rates"."dimension" = 'enjoyment' AND "rates"."rater_id" = 1 LIMIT 1
  CACHE (0.0ms)  SELECT "rates".* FROM "rates" WHERE "rates"."rateable_id" = 763 AND "rates"."rateable_type" = 'Song' AND "rates"."dimension" = 'enjoyment' AND "rates"."rater_id" = 1 LIMIT 1
  CACHE (0.0ms)  SELECT "rates".* FROM "rates" WHERE "rates"."rateable_id" = 763 AND "rates"."rateable_type" = 'Song' AND "rates"."dimension" = 'enjoyment' AND "rates"."rater_id" = 1 LIMIT 1
  CACHE (0.0ms)  SELECT "rates".* FROM "rates" WHERE "rates"."rateable_id" = 763 AND "rates"."rateable_type" = 'Song' AND "rates"."dimension" = 'enjoyment' AND "rates"."rater_id" = 1 LIMIT 1
  Rate Load (0.4ms)  SELECT "rates".* FROM "rates" WHERE "rates"."rateable_id" = 751 AND "rates"."rateable_type" = 'Song' AND "rates"."dimension" = 'enjoyment' AND "rates"."rater_id" = 1 LIMIT 1
  CACHE (0.0ms)  SELECT "rates".* FROM "rates" WHERE "rates"."rateable_id" = 751 AND "rates"."rateable_type" = 'Song' AND "rates"."dimension" = 'enjoyment' AND "rates"."rater_id" = 1 LIMIT 1
  CACHE (0.0ms)  SELECT "rates".* FROM "rates" WHERE "rates"."rateable_id" = 751 AND "rates"."rateable_type" = 'Song' AND "rates"."dimension" = 'enjoyment' AND "rates"."rater_id" = 1 LIMIT 1
  CACHE (0.0ms)  SELECT "rates".* FROM "rates" WHERE "rates"."rateable_id" = 751 AND "rates"."rateable_type" = 'Song' AND "rates"."dimension" = 'enjoyment' AND "rates"."rater_id" = 1 LIMIT 1
  CACHE (0.0ms)  SELECT "rates".* FROM "rates" WHERE "rates"."rateable_id" = 751 AND "rates"."rateable_type" = 'Song' AND "rates"."dimension" = 'enjoyment' AND "rates"."rater_id" = 1 LIMIT 1

These calls totally make sense when we don't want users to update their ratings, but otherwise they're unnecessary.

Problem fixed by moving the :allow_update config check up.