seems_rateable 1.0.9 → 1.0.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/app/controllers/seems_rateable/application_controller.rb +4 -1
- data/app/controllers/seems_rateable/ratings_controller.rb +8 -12
- data/app/models/seems_rateable/cached_rating.rb +3 -3
- data/app/models/seems_rateable/rate.rb +4 -4
- data/config/routes.rb +1 -1
- data/lib/generators/seems_rateable/install/install_generator.rb +33 -30
- data/lib/generators/seems_rateable/install/templates/jRating.js.erb +2 -2
- data/lib/seems_rateable/engine.rb +12 -13
- data/lib/seems_rateable/errors.rb +16 -16
- data/lib/seems_rateable/helpers.rb +22 -22
- data/lib/seems_rateable/model.rb +96 -96
- data/lib/seems_rateable/routes.rb +4 -4
- data/lib/seems_rateable/version.rb +1 -1
- metadata +2 -2
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA1:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: e92afbf1216b55fc3629fd9dc830ace41d6f74e5
         | 
| 4 | 
            +
              data.tar.gz: 05bcffa91c9f3283436c050b4e4947db993f54d6
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 6b0c3a1a4e6eabe2f23b18463a33c122f654bd0449656bc8af3f2d0073878427fdae9016de8b5f47b67a747c302b78da664b61c2fe0ee60bbac509bac70e0544
         | 
| 7 | 
            +
              data.tar.gz: 68e21d5a5865df84608105641c80b2434705e2c92fa7e941ec5f6eee854b0cff3334aa9de5a6f1547a3c2f47216d04ee8cf44d459c415af6b2fac13edabde7e1
         | 
| @@ -1,17 +1,13 @@ | |
| 1 1 | 
             
            require_dependency "seems_rateable/application_controller"
         | 
| 2 2 |  | 
| 3 3 | 
             
            module SeemsRateable
         | 
| 4 | 
            -
             | 
| 5 | 
            -
             | 
| 6 | 
            -
             | 
| 7 | 
            -
             | 
| 8 | 
            -
             | 
| 9 | 
            -
             | 
| 10 | 
            -
             | 
| 11 | 
            -
            			render :json => true
         | 
| 12 | 
            -
            		 rescue Errors::AlreadyRatedError
         | 
| 13 | 
            -
            			render :json => {:error => true}
         | 
| 14 | 
            -
            		 end
         | 
| 15 | 
            -
            	 end
         | 
| 4 | 
            +
             class RatingsController < ApplicationController
         | 
| 5 | 
            +
              def create
         | 
| 6 | 
            +
               raise NoCurrentUserInstanceError unless current_user
         | 
| 7 | 
            +
            	obj = params[:kls].classify.constantize.find(params[:idBox])
         | 
| 8 | 
            +
            	obj.rate(params[:rate].to_i, current_user.id, params[:dimension])
         | 
| 9 | 
            +
            	
         | 
| 10 | 
            +
            	render :json => true
         | 
| 16 11 | 
             
              end
         | 
| 12 | 
            +
             end
         | 
| 17 13 | 
             
            end
         | 
| @@ -1,6 +1,6 @@ | |
| 1 1 | 
             
            module SeemsRateable
         | 
| 2 | 
            -
             | 
| 3 | 
            -
             | 
| 4 | 
            -
             | 
| 5 | 
            -
             | 
| 2 | 
            +
             class Rate < ActiveRecord::Base
         | 
| 3 | 
            +
              belongs_to :rater, :class_name => SeemsRateable::Engine.config.owner_class
         | 
| 4 | 
            +
              belongs_to :rateable, :polymorphic => true
         | 
| 5 | 
            +
             end
         | 
| 6 6 | 
             
            end
         | 
    
        data/config/routes.rb
    CHANGED
    
    
| @@ -2,38 +2,41 @@ require 'rails/generators/migration' | |
| 2 2 | 
             
            require 'fileutils'
         | 
| 3 3 |  | 
| 4 4 | 
             
            module SeemsRateable
         | 
| 5 | 
            -
             | 
| 6 | 
            -
             | 
| 7 | 
            -
             | 
| 8 | 
            -
             | 
| 9 | 
            -
             | 
| 10 | 
            -
             | 
| 11 | 
            -
             | 
| 12 | 
            -
             | 
| 13 | 
            -
             | 
| 14 | 
            -
             | 
| 15 | 
            -
             | 
| 16 | 
            -
             | 
| 17 | 
            -
             | 
| 5 | 
            +
             module Generators
         | 
| 6 | 
            +
              class InstallGenerator < ::Rails::Generators::Base
         | 
| 7 | 
            +
               include Rails::Generators::Migration
         | 
| 8 | 
            +
            	source_root File.expand_path('../templates', __FILE__)
         | 
| 9 | 
            +
            	
         | 
| 10 | 
            +
               def self.next_migration_number(path)
         | 
| 11 | 
            +
            	 unless @prev_migration_nr
         | 
| 12 | 
            +
            	  @prev_migration_nr = Time.now.utc.strftime("%Y%m%d%H%M%S").to_i
         | 
| 13 | 
            +
            	 else
         | 
| 14 | 
            +
            	  @prev_migration_nr += 1
         | 
| 15 | 
            +
            	 end
         | 
| 16 | 
            +
            	 @prev_migration_nr.to_s
         | 
| 17 | 
            +
            	end
         | 
| 18 18 |  | 
| 19 | 
            -
             | 
| 20 | 
            -
             | 
| 21 | 
            -
             | 
| 22 | 
            -
            			  migration_template "cached_ratings_migration.rb", "db/migrate/create_seems_rateable_cached_ratings.rb"
         | 
| 23 | 
            -
            			end
         | 
| 19 | 
            +
            	def routegen
         | 
| 20 | 
            +
            	 route("seems_rateable")
         | 
| 21 | 
            +
            	end
         | 
| 24 22 |  | 
| 25 | 
            -
             | 
| 26 | 
            -
             | 
| 27 | 
            -
             | 
| 28 | 
            -
             | 
| 23 | 
            +
            	desc "generating migration files"
         | 
| 24 | 
            +
            	 def copy_migrations
         | 
| 25 | 
            +
            	  migration_template "rates_migration.rb", "db/migrate/create_seems_rateable_rates.rb"
         | 
| 26 | 
            +
            	  migration_template "cached_ratings_migration.rb", "db/migrate/create_seems_rateable_cached_ratings.rb"
         | 
| 27 | 
            +
            	 end
         | 
| 29 28 |  | 
| 30 | 
            -
             | 
| 31 | 
            -
             | 
| 32 | 
            -
             | 
| 33 | 
            -
             | 
| 34 | 
            -
            				copy_file "jRating.js.erb", "app/assets/javascripts/rateable/jRating.js.erb" unless File.exists?("app/assets/javascripts/rateable/jRating.js.erb")
         | 
| 35 | 
            -
            			end
         | 
| 29 | 
            +
              	desc "generating initializer"
         | 
| 30 | 
            +
            	 def copy_initializer
         | 
| 31 | 
            +
            	  template "initializer.rb", "config/initializers/seems_rateable.rb"
         | 
| 32 | 
            +
            	 end
         | 
| 36 33 |  | 
| 37 | 
            -
             | 
| 38 | 
            -
             | 
| 34 | 
            +
            	desc "generating javascript files"
         | 
| 35 | 
            +
            	 def copy_javascript_asset
         | 
| 36 | 
            +
            	  Dir.mkdir "app/assets/javascripts/rateable" unless File.directory?("app/assets/javascripts/rateable")
         | 
| 37 | 
            +
            	  copy_file "rateable.js.erb", "app/assets/javascripts/rateable/rateable.js.erb" unless File.exists?("app/assets/javascripts/rateable/rateable.js.erb")
         | 
| 38 | 
            +
            	  copy_file "jRating.js.erb", "app/assets/javascripts/rateable/jRating.js.erb" unless File.exists?("app/assets/javascripts/rateable/jRating.js.erb")
         | 
| 39 | 
            +
            	 end
         | 
| 40 | 
            +
              end
         | 
| 41 | 
            +
             end
         | 
| 39 42 | 
             
            end
         | 
| @@ -12,8 +12,8 @@ | |
| 12 12 | 
             
            	$.fn.jRating = function(op) {
         | 
| 13 13 | 
             
            		var defaults = {
         | 
| 14 14 | 
             
            			/** String vars **/
         | 
| 15 | 
            -
            			bigStarsPath : '<%=  | 
| 16 | 
            -
            			smallStarsPath : '<%=  | 
| 15 | 
            +
            			bigStarsPath : '<%= asset_path "seems_rateable/stars.png" %>', // path of the icon stars.png
         | 
| 16 | 
            +
            			smallStarsPath : '<%= asset_path "seems_rateable/small.png" %>', // path of the icon small.png
         | 
| 17 17 | 
             
            			path : '<%= SeemsRateable::Engine.routes.url_helpers.ratings_path %>',
         | 
| 18 18 | 
             
            			type : 'big', // can be set to 'small' or 'big'
         | 
| 19 19 |  | 
| @@ -1,17 +1,16 @@ | |
| 1 1 | 
             
            module SeemsRateable
         | 
| 2 | 
            -
             | 
| 3 | 
            -
             | 
| 2 | 
            +
             class Engine < ::Rails::Engine
         | 
| 3 | 
            +
              isolate_namespace SeemsRateable
         | 
| 4 4 |  | 
| 5 | 
            -
             | 
| 6 | 
            -
             | 
| 7 | 
            -
             | 
| 8 | 
            -
                end
         | 
| 9 | 
            -
                
         | 
| 10 | 
            -
                initializer :seems_rateable do
         | 
| 11 | 
            -
            		ActiveRecord::Base.send :include, SeemsRateable::Model
         | 
| 12 | 
            -
            		ActionView::Base.send :include, SeemsRateable::Helpers
         | 
| 13 | 
            -
            		ActionDispatch::Routing::Mapper.send :include, SeemsRateable::Routes
         | 
| 14 | 
            -
                end
         | 
| 15 | 
            -
                    
         | 
| 5 | 
            +
              config.generators do |g|
         | 
| 6 | 
            +
               g.test_framework :rspec, :fixture => false
         | 
| 7 | 
            +
            	g.fixture_replacement :factory_girl, :dir => 'spec/factories'
         | 
| 16 8 | 
             
              end
         | 
| 9 | 
            +
                
         | 
| 10 | 
            +
              initializer :seems_rateable do
         | 
| 11 | 
            +
            	ActiveRecord::Base.send :include, SeemsRateable::Model
         | 
| 12 | 
            +
            	ActionView::Base.send :include, SeemsRateable::Helpers
         | 
| 13 | 
            +
            	ActionDispatch::Routing::Mapper.send :include, SeemsRateable::Routes
         | 
| 14 | 
            +
              end     
         | 
| 15 | 
            +
             end
         | 
| 17 16 | 
             
            end
         | 
| @@ -1,21 +1,21 @@ | |
| 1 1 | 
             
            module SeemsRateable
         | 
| 2 | 
            -
             | 
| 3 | 
            -
             | 
| 4 | 
            -
             | 
| 5 | 
            -
             | 
| 6 | 
            -
             | 
| 7 | 
            -
             | 
| 2 | 
            +
             module Errors
         | 
| 3 | 
            +
              class InvalidRateableObjectError < StandardError
         | 
| 4 | 
            +
            	def to_s
         | 
| 5 | 
            +
            	 "Stated object is not rateable. Add 'seems_rateable' to your object's class model."
         | 
| 6 | 
            +
            	end
         | 
| 7 | 
            +
              end
         | 
| 8 8 |  | 
| 9 | 
            -
             | 
| 10 | 
            -
             | 
| 11 | 
            -
             | 
| 12 | 
            -
             | 
| 13 | 
            -
             | 
| 9 | 
            +
              class NoCurrentUserInstanceError < StandardError
         | 
| 10 | 
            +
            	def to_s
         | 
| 11 | 
            +
            	 "User instance current_user is not available."
         | 
| 12 | 
            +
            	end
         | 
| 13 | 
            +
              end
         | 
| 14 14 |  | 
| 15 | 
            -
             | 
| 16 | 
            -
             | 
| 17 | 
            -
             | 
| 18 | 
            -
            			end
         | 
| 19 | 
            -
            		end	
         | 
| 15 | 
            +
              class AlreadyRatedError < StandardError
         | 
| 16 | 
            +
            	def to_s
         | 
| 17 | 
            +
            	 "User has already rated an object."
         | 
| 20 18 | 
             
            	end
         | 
| 19 | 
            +
              end	
         | 
| 20 | 
            +
             end
         | 
| 21 21 | 
             
            end
         | 
| @@ -1,27 +1,27 @@ | |
| 1 1 | 
             
            module SeemsRateable
         | 
| 2 | 
            -
             | 
| 3 | 
            -
             | 
| 4 | 
            -
             | 
| 2 | 
            +
             module Helpers  		
         | 
| 3 | 
            +
              def rating_for(obj, opts={})
         | 
| 4 | 
            +
               raise Errors::InvalidRateableObjectError unless obj.class.respond_to?(:rateable?) 
         | 
| 5 5 |  | 
| 6 | 
            -
             | 
| 7 | 
            -
             | 
| 8 | 
            -
             | 
| 9 | 
            -
             | 
| 10 | 
            -
             | 
| 11 | 
            -
             | 
| 6 | 
            +
            	options = {
         | 
| 7 | 
            +
            	 :dimension => nil,
         | 
| 8 | 
            +
            	 :static => false,
         | 
| 9 | 
            +
            	 :class => 'rateable',
         | 
| 10 | 
            +
            	 :id => nil
         | 
| 11 | 
            +
            	}.update(opts)
         | 
| 12 12 |  | 
| 13 | 
            -
             | 
| 14 | 
            -
             | 
| 15 | 
            -
             | 
| 16 | 
            -
             | 
| 13 | 
            +
            	content_tag :div, "", "data-average" => obj.average(options[:dimension]) ? obj.average(options[:dimension]).avg : 0, :id => options[:id],
         | 
| 14 | 
            +
            	       		:class => "#{options[:class]}#{jdisabled?(options[:static])}",
         | 
| 15 | 
            +
            					"data-id" => obj.id, "data-kls" => obj.class.name, "data-dimension" => options[:dimension]    
         | 
| 16 | 
            +
              end
         | 
| 17 17 |  | 
| 18 | 
            -
             | 
| 19 | 
            -
             | 
| 20 | 
            -
             | 
| 21 | 
            -
             | 
| 22 | 
            -
             | 
| 23 | 
            -
             | 
| 24 | 
            -
             | 
| 25 | 
            -
             | 
| 26 | 
            -
             | 
| 18 | 
            +
              def seems_rateable_stylesheet
         | 
| 19 | 
            +
            	stylesheet_link_tag    "seems_rateable/application", media: "all", "data-turbolinks-track" => true 
         | 
| 20 | 
            +
              end
         | 
| 21 | 
            +
               	
         | 
| 22 | 
            +
              private
         | 
| 23 | 
            +
              def jdisabled?(option)
         | 
| 24 | 
            +
               " jDisabled" if option || !current_user
         | 
| 25 | 
            +
              end
         | 
| 26 | 
            +
             end
         | 
| 27 27 | 
             
            end
         | 
    
        data/lib/seems_rateable/model.rb
    CHANGED
    
    | @@ -1,111 +1,111 @@ | |
| 1 1 | 
             
            require 'active_support/concern'
         | 
| 2 2 | 
             
            module SeemsRateable
         | 
| 3 | 
            -
             | 
| 4 | 
            -
             | 
| 3 | 
            +
             module Model
         | 
| 4 | 
            +
              extend ActiveSupport::Concern
         | 
| 5 5 |  | 
| 6 | 
            -
             | 
| 7 | 
            -
             | 
| 8 | 
            -
             | 
| 9 | 
            -
             | 
| 10 | 
            -
             | 
| 11 | 
            -
             | 
| 12 | 
            -
             | 
| 13 | 
            -
             | 
| 14 | 
            -
             | 
| 15 | 
            -
             | 
| 16 | 
            -
             | 
| 17 | 
            -
             | 
| 18 | 
            -
             | 
| 6 | 
            +
              def rate(stars, user_id, dimension=nil)
         | 
| 7 | 
            +
            	if !has_rated?(user_id, dimension)   
         | 
| 8 | 
            +
            	 self.rates.create do |r| 
         | 
| 9 | 
            +
            	  r.stars = stars
         | 
| 10 | 
            +
            	  r.rater_id = user_id 
         | 
| 11 | 
            +
            	 end
         | 
| 12 | 
            +
            	 update_overall_average_rating(stars, dimension) 
         | 
| 13 | 
            +
            	elsif has_rated?(user_id, dimension) && can_update?
         | 
| 14 | 
            +
            	 update_users_rating(stars, user_id, dimension)    
         | 
| 15 | 
            +
            	else
         | 
| 16 | 
            +
            	 raise Errors::AlreadyRatedError  
         | 
| 17 | 
            +
            	end		
         | 
| 18 | 
            +
              end
         | 
| 19 19 |  | 
| 20 | 
            -
             | 
| 21 | 
            -
             | 
| 22 | 
            -
             | 
| 23 | 
            -
             | 
| 24 | 
            -
             | 
| 25 | 
            -
             | 
| 26 | 
            -
             | 
| 27 | 
            -
             | 
| 28 | 
            -
             | 
| 29 | 
            -
             | 
| 30 | 
            -
             | 
| 31 | 
            -
             | 
| 32 | 
            -
             | 
| 33 | 
            -
             | 
| 34 | 
            -
             | 
| 35 | 
            -
             | 
| 20 | 
            +
              def update_overall_average_rating(stars, dimension=nil)
         | 
| 21 | 
            +
            	if average(dimension).nil?
         | 
| 22 | 
            +
            	 CachedRating.create do |r|
         | 
| 23 | 
            +
            	  r.avg = stars
         | 
| 24 | 
            +
            	  r.dimension = dimension
         | 
| 25 | 
            +
            	  r.cacheable_id = self.id
         | 
| 26 | 
            +
            	  r.cacheable_type = self.class.name
         | 
| 27 | 
            +
            	  r.cnt = 1
         | 
| 28 | 
            +
            	 end						                   
         | 
| 29 | 
            +
            	else
         | 
| 30 | 
            +
            	 r = average(dimension)
         | 
| 31 | 
            +
            	 r.avg = (r.avg * r.cnt + stars) / (r.cnt+1)
         | 
| 32 | 
            +
            	 r.cnt += 1
         | 
| 33 | 
            +
            	 r.save!
         | 
| 34 | 
            +
            	end   
         | 
| 35 | 
            +
              end  
         | 
| 36 36 |  | 
| 37 | 
            -
             | 
| 38 | 
            -
             | 
| 39 | 
            -
             | 
| 40 | 
            -
             | 
| 41 | 
            -
             | 
| 42 | 
            -
             | 
| 43 | 
            -
             | 
| 44 | 
            -
             | 
| 37 | 
            +
              def update_users_rating(stars, user_id, dimension=nil)
         | 
| 38 | 
            +
            	obj = rates(dimension).where(:rater_id => user_id).first
         | 
| 39 | 
            +
            	current_record = average(dimension)
         | 
| 40 | 
            +
            	current_record.avg = (current_record.avg*current_record.cnt - obj.stars + stars) / (current_record.cnt)
         | 
| 41 | 
            +
            	current_record.save!
         | 
| 42 | 
            +
            	obj.stars = stars
         | 
| 43 | 
            +
            	obj.save!
         | 
| 44 | 
            +
              end
         | 
| 45 45 |  | 
| 46 46 |  | 
| 47 | 
            -
             | 
| 48 | 
            -
             | 
| 49 | 
            -
             | 
| 50 | 
            -
             | 
| 51 | 
            -
             | 
| 52 | 
            -
             | 
| 53 | 
            -
             | 
| 47 | 
            +
              def average(dimension=nil)
         | 
| 48 | 
            +
            	if dimension.nil?
         | 
| 49 | 
            +
            	 self.send "rate_average_without_dimension"
         | 
| 50 | 
            +
            	else
         | 
| 51 | 
            +
            	 self.send "#{dimension}_average"
         | 
| 52 | 
            +
            	end      
         | 
| 53 | 
            +
              end
         | 
| 54 54 |  | 
| 55 | 
            -
             | 
| 56 | 
            -
             | 
| 57 | 
            -
             | 
| 58 | 
            -
             | 
| 59 | 
            -
             | 
| 60 | 
            -
             | 
| 61 | 
            -
             | 
| 55 | 
            +
              def rates(dimension=nil)
         | 
| 56 | 
            +
            	if dimension.nil?
         | 
| 57 | 
            +
            	 self.send "rates_without_dimension"
         | 
| 58 | 
            +
               else
         | 
| 59 | 
            +
            	 self.send "#{dimension}_rates"
         | 
| 60 | 
            +
            	end
         | 
| 61 | 
            +
              end
         | 
| 62 62 |  | 
| 63 | 
            -
             | 
| 64 | 
            -
             | 
| 65 | 
            -
             | 
| 66 | 
            -
             | 
| 67 | 
            -
             | 
| 68 | 
            -
             | 
| 69 | 
            -
             | 
| 63 | 
            +
              def raters(dimension=nil)
         | 
| 64 | 
            +
            	if dimension.nil?
         | 
| 65 | 
            +
            	 self.send "raters_without_dimension"
         | 
| 66 | 
            +
            	else
         | 
| 67 | 
            +
            	 self.send "#{dimension}_raters"
         | 
| 68 | 
            +
            	end
         | 
| 69 | 
            +
              end
         | 
| 70 70 |  | 
| 71 | 
            -
             | 
| 72 | 
            -
             | 
| 73 | 
            -
             | 
| 74 | 
            -
             | 
| 71 | 
            +
              def has_rated?(user_id, dimension=nil)
         | 
| 72 | 
            +
            	record = self.rates(dimension).where(:rater_id => user_id)  
         | 
| 73 | 
            +
            	record.empty? ? false : true				       
         | 
| 74 | 
            +
              end 	  
         | 
| 75 75 |  | 
| 76 | 
            -
             | 
| 77 | 
            -
             | 
| 78 | 
            -
             | 
| 76 | 
            +
              def can_update?
         | 
| 77 | 
            +
            	self.class.can_update?
         | 
| 78 | 
            +
              end
         | 
| 79 79 |  | 
| 80 | 
            -
             | 
| 81 | 
            -
             | 
| 82 | 
            -
             | 
| 83 | 
            -
             | 
| 84 | 
            -
             | 
| 85 | 
            -
             | 
| 86 | 
            -
             | 
| 87 | 
            -
             | 
| 88 | 
            -
             | 
| 89 | 
            -
             | 
| 90 | 
            -
             | 
| 91 | 
            -
             | 
| 80 | 
            +
              module ClassMethods
         | 
| 81 | 
            +
               def seems_rateable(opts={})               
         | 
| 82 | 
            +
            	 #has_many :rates_without_dimension, -> { where(dimension: nil) }, :as => :rateable, :class_name => SeemsRateable::Rate, :dependent => :destroy			  
         | 
| 83 | 
            +
            	 has_many :rates_without_dimension, :conditions => { dimension: nil }, :as => :rateable, :class_name => SeemsRateable::Rate, :dependent => :destroy			  
         | 
| 84 | 
            +
            	 has_many :raters_without_dimension, :through => :rates_without_dimension, :source => :rater 
         | 
| 85 | 
            +
            	 has_one :rate_average_without_dimension, :conditions => { dimension: nil }, :as => :cacheable, :class_name => SeemsRateable::CachedRating, :dependent => :destroy
         | 
| 86 | 
            +
            	  	  
         | 
| 87 | 
            +
            	 @permission = opts[:allow_update] ? true : false		 
         | 
| 88 | 
            +
            	  	 
         | 
| 89 | 
            +
            	 def self.can_update?	 		 
         | 
| 90 | 
            +
            	  @permission
         | 
| 91 | 
            +
            	 end
         | 
| 92 92 |  | 
| 93 | 
            -
             | 
| 94 | 
            -
             | 
| 95 | 
            -
             | 
| 96 | 
            -
             | 
| 97 | 
            -
             | 
| 98 | 
            -
             | 
| 99 | 
            -
             | 
| 100 | 
            -
             | 
| 101 | 
            -
             | 
| 102 | 
            -
             | 
| 103 | 
            -
             | 
| 104 | 
            -
             | 
| 93 | 
            +
            	 def self.rateable?
         | 
| 94 | 
            +
            	  true
         | 
| 95 | 
            +
            	 end
         | 
| 96 | 
            +
            	  	  
         | 
| 97 | 
            +
            	 if opts[:dimensions].is_a?(Array)
         | 
| 98 | 
            +
            	  opts[:dimensions].each do |dimension|        
         | 
| 99 | 
            +
            	   has_many :"#{dimension}_rates", :conditions => { dimension: dimension.to_s }, :dependent => :destroy, :class_name => SeemsRateable::Rate, :as => :rateable
         | 
| 100 | 
            +
            	   has_many :"#{dimension}_raters", :through => :"#{dimension}_rates", :source => :rater         
         | 
| 101 | 
            +
            	   has_one :"#{dimension}_average", :conditions => { dimension: dimension.to_s }, :as => :cacheable, :class_name => SeemsRateable::CachedRating, :dependent => :destroy
         | 
| 102 | 
            +
            	  end
         | 
| 103 | 
            +
            	 end	 	 					
         | 
| 104 | 
            +
               end
         | 
| 105 105 |  | 
| 106 | 
            -
             | 
| 107 | 
            -
             | 
| 108 | 
            -
             | 
| 109 | 
            -
             | 
| 110 | 
            -
             | 
| 106 | 
            +
            	def seems_rateable_rater
         | 
| 107 | 
            +
            	 has_many :ratings_given, :class_name => SeemsRateable::Rate, :foreign_key => :rater_id
         | 
| 108 | 
            +
            	end	
         | 
| 109 | 
            +
              end
         | 
| 110 | 
            +
             end
         | 
| 111 111 | 
             
            end
         | 
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: seems_rateable
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 1.0. | 
| 4 | 
            +
              version: 1.0.10
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Peter Toth
         | 
| 8 8 | 
             
            autorequire: 
         | 
| 9 9 | 
             
            bindir: bin
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date: 2013- | 
| 11 | 
            +
            date: 2013-08-06 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: rails
         |