ratable 0.0.2 → 0.0.3
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/lib/ratable.rb +1 -0
- data/lib/ratable/engine.rb +6 -1
- data/lib/ratable/models/ratee.rb +40 -15
- data/lib/ratable/models/ratee_rater.rb +71 -0
- data/lib/ratable/models/rater.rb +1 -1
- data/lib/ratable/version.rb +1 -1
- data/spec/dummy/app/models/user.rb +1 -1
- data/spec/dummy/log/development.log +15 -0
- metadata +6 -5
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA1:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 0b37b427f57776006d941b8f962e0ac53c332972
         | 
| 4 | 
            +
              data.tar.gz: 4784df61824db2de0351693663283bd173713e82
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 0bc3c2714db3e79fba8b448776172340c0717b17fc7bcf59ea5942fab553456f4f5458cc4b16c16eaad6d9cef22de8de09b38c93f3651b6a72ea46dcf5c2fa37
         | 
| 7 | 
            +
              data.tar.gz: bc620147f939dbc11733389ea429f6b5f3c9c0276fce72d54a64d991ca3caaf0780caf12ab800df9610092d37eb82dd17a812d037151ab6b6a4cb1d9a1668f2f
         | 
    
        data/lib/ratable.rb
    CHANGED
    
    
    
        data/lib/ratable/engine.rb
    CHANGED
    
    | @@ -3,7 +3,7 @@ require 'rails' | |
| 3 3 | 
             
            module Ratable
         | 
| 4 4 | 
             
              class Engine < ::Rails::Engine
         | 
| 5 5 | 
             
                isolate_namespace Ratable
         | 
| 6 | 
            -
                initializer "ratable.models. | 
| 6 | 
            +
                initializer "ratable.models.ratable" do
         | 
| 7 7 | 
             
                  ActiveSupport.on_load(:active_record) do
         | 
| 8 8 | 
             
                    extend Ratable::Models::Ratable::ActiveRecordExtension
         | 
| 9 9 | 
             
                    include Ratable::Models::Ratable::ActiveRecordInclusion
         | 
| @@ -19,6 +19,11 @@ module Ratable | |
| 19 19 | 
             
                    extend Ratable::Models::Rater::ActiveRecordExtension
         | 
| 20 20 | 
             
                  end
         | 
| 21 21 | 
             
                end
         | 
| 22 | 
            +
                initializer "ratable.models.ratee_rater" do
         | 
| 23 | 
            +
                  ActiveSupport.on_load(:active_record) do
         | 
| 24 | 
            +
                    extend Ratable::Models::RateeRater::ActiveRecordExtension
         | 
| 25 | 
            +
                  end
         | 
| 26 | 
            +
                end
         | 
| 22 27 | 
             
                config.generators do |g|
         | 
| 23 28 | 
             
                  g.test_framework :rspec, :fixture => false
         | 
| 24 29 | 
             
                  g.fixture_replacement :factory_girl, :dir => 'spec/factories'
         | 
    
        data/lib/ratable/models/ratee.rb
    CHANGED
    
    | @@ -2,41 +2,66 @@ module Ratable | |
| 2 2 | 
             
              module Models
         | 
| 3 3 | 
             
                module Ratee
         | 
| 4 4 | 
             
                  extend ActiveSupport::Concern
         | 
| 5 | 
            +
                  extend Ratable::ActiveRecordExtension
         | 
| 5 6 |  | 
| 6 7 | 
             
                  attr_reader :has_one
         | 
| 7 8 |  | 
| 8 9 | 
             
                  module ActiveRecordExtension
         | 
| 9 10 | 
             
                    def acts_as_ratee(options={has_one: false})
         | 
| 11 | 
            +
                      throw "To make a model the rater and the ratee use `acts_as_ratee_and_rater`" if acts_like_rater?
         | 
| 10 12 | 
             
                      @has_one = options[:has_one]
         | 
| 11 13 | 
             
                      include Ratee
         | 
| 12 14 | 
             
                    end
         | 
| 13 15 | 
             
                  end
         | 
| 14 16 |  | 
| 15 17 | 
             
                  included do
         | 
| 16 | 
            -
                     | 
| 17 | 
            -
                      has_one | 
| 18 | 
            +
                    unless acts_like_rater?
         | 
| 19 | 
            +
                      if @has_one
         | 
| 20 | 
            +
                        has_one :rating, class_name: 'Ratable::Rating', dependent: :destroy, as: :ratee
         | 
| 21 | 
            +
                      else
         | 
| 22 | 
            +
                        has_many :ratings, class_name: 'Ratable::Rating', dependent: :destroy, as: :ratee
         | 
| 23 | 
            +
                      end
         | 
| 18 24 | 
             
                    else
         | 
| 19 | 
            -
                       | 
| 25 | 
            +
                      if @has_one
         | 
| 26 | 
            +
                        has_one :ratee_rating, class_name: 'Ratable::Rating', dependent: :destroy, as: :ratee
         | 
| 27 | 
            +
                      else
         | 
| 28 | 
            +
                        has_many :ratee_ratings, class_name: 'Ratable::Rating', dependent: :destroy, as: :ratee
         | 
| 29 | 
            +
                      end
         | 
| 20 30 | 
             
                    end
         | 
| 21 | 
            -
                    has_one :rating_summary, class_name: 'Ratable::RatingSummary', as: :ratee
         | 
| 22 31 | 
             
                  end
         | 
| 23 32 |  | 
| 24 33 | 
             
                  def raters
         | 
| 25 | 
            -
                     | 
| 26 | 
            -
                       | 
| 34 | 
            +
                    unless acts_like_rater?
         | 
| 35 | 
            +
                      if @has_one
         | 
| 36 | 
            +
                        rating.rater
         | 
| 37 | 
            +
                      else
         | 
| 38 | 
            +
                        ratings.includes(:rater).collect { |rating| rating.rater }
         | 
| 39 | 
            +
                      end
         | 
| 27 40 | 
             
                    else
         | 
| 28 | 
            -
                       | 
| 41 | 
            +
                      if @has_one
         | 
| 42 | 
            +
                        ratee_rating.rater
         | 
| 43 | 
            +
                      else
         | 
| 44 | 
            +
                        ratee_ratings.includes(:rater).collect { |rating| rating.rater }
         | 
| 45 | 
            +
                      end
         | 
| 29 46 | 
             
                    end
         | 
| 30 47 | 
             
                  end
         | 
| 31 48 |  | 
| 32 | 
            -
                  def rate(options={})
         | 
| 33 | 
            -
             | 
| 34 | 
            -
             | 
| 35 | 
            -
             | 
| 36 | 
            -
             | 
| 37 | 
            -
             | 
| 38 | 
            -
             | 
| 39 | 
            -
                  end
         | 
| 49 | 
            +
                  # def rate(options={})
         | 
| 50 | 
            +
                  #   options.reject! { |k| k == :ratee }
         | 
| 51 | 
            +
                  #   unless acts_like_rater?
         | 
| 52 | 
            +
                  #     if @has_one
         | 
| 53 | 
            +
                  #       self.rating.create(options)
         | 
| 54 | 
            +
                  #     else
         | 
| 55 | 
            +
                  #       self.ratings.create(options)
         | 
| 56 | 
            +
                  #     end
         | 
| 57 | 
            +
                  #   else
         | 
| 58 | 
            +
                  #     if @has_one
         | 
| 59 | 
            +
                  #       self.ratee_rating.create(options)
         | 
| 60 | 
            +
                  #     else
         | 
| 61 | 
            +
                  #       self.ratee_ratings.create(options)
         | 
| 62 | 
            +
                  #     end
         | 
| 63 | 
            +
                  #   end
         | 
| 64 | 
            +
                  # end
         | 
| 40 65 |  | 
| 41 66 | 
             
                end
         | 
| 42 67 | 
             
              end
         | 
| @@ -0,0 +1,71 @@ | |
| 1 | 
            +
            module Ratable
         | 
| 2 | 
            +
              module Models
         | 
| 3 | 
            +
                module RateeRater
         | 
| 4 | 
            +
                  extend ActiveSupport::Concern
         | 
| 5 | 
            +
                  extend Ratable::ActiveRecordExtension
         | 
| 6 | 
            +
             | 
| 7 | 
            +
                  attr_reader :has_one_ratee, :has_one_rater
         | 
| 8 | 
            +
             | 
| 9 | 
            +
                  module ActiveRecordExtension
         | 
| 10 | 
            +
                    def acts_as_ratee_and_rater(options={has_one_ratee: false, has_one_rater: false})
         | 
| 11 | 
            +
                      @has_one_ratee = options[:has_one_ratee]
         | 
| 12 | 
            +
                      @has_one_rater = options[:has_one_rater]
         | 
| 13 | 
            +
                      include RateeRater
         | 
| 14 | 
            +
                    end
         | 
| 15 | 
            +
             | 
| 16 | 
            +
                    def acts_as_rater_and_ratee(options={has_one_ratee: false, has_one_rater: false})
         | 
| 17 | 
            +
                      @has_one_ratee = options[:has_one_ratee]
         | 
| 18 | 
            +
                      @has_one_rater = options[:has_one_rater]
         | 
| 19 | 
            +
                      include RateeRater
         | 
| 20 | 
            +
                    end
         | 
| 21 | 
            +
                  end
         | 
| 22 | 
            +
             | 
| 23 | 
            +
                  included do
         | 
| 24 | 
            +
                    if @has_one_ratee
         | 
| 25 | 
            +
                      has_one :ratee_rating, class_name: 'Ratable::Rating', dependent: :destroy, as: :ratee
         | 
| 26 | 
            +
                    else
         | 
| 27 | 
            +
                      has_many :ratee_ratings, class_name: 'Ratable::Rating', dependent: :destroy, as: :ratee
         | 
| 28 | 
            +
                    end
         | 
| 29 | 
            +
                    if @has_one_rater
         | 
| 30 | 
            +
                      has_one :rater_rating, class_name: 'Ratable::Rating', dependent: :destroy, as: :rater
         | 
| 31 | 
            +
                    else
         | 
| 32 | 
            +
                      has_many :rater_ratings, class_name: 'Ratable::Rating', dependent: :destroy, as: :rater
         | 
| 33 | 
            +
                    end
         | 
| 34 | 
            +
                  end
         | 
| 35 | 
            +
             | 
| 36 | 
            +
                  def ratees
         | 
| 37 | 
            +
                    if @has_one_ratee
         | 
| 38 | 
            +
                      rater_rating.ratee
         | 
| 39 | 
            +
                    else
         | 
| 40 | 
            +
                      rater_rating.includes(:ratee).collect { |rating| rating.ratee }
         | 
| 41 | 
            +
                    end
         | 
| 42 | 
            +
                  end
         | 
| 43 | 
            +
             | 
| 44 | 
            +
                  def raters
         | 
| 45 | 
            +
                    if @has_one_rater
         | 
| 46 | 
            +
                      ratee_rating.rater
         | 
| 47 | 
            +
                    else
         | 
| 48 | 
            +
                      ratee_ratings.includes(:rater).collect { |rating| rating.rater }
         | 
| 49 | 
            +
                    end
         | 
| 50 | 
            +
                  end
         | 
| 51 | 
            +
             | 
| 52 | 
            +
                  def ratee_rate(options={})
         | 
| 53 | 
            +
                    options.reject! { |k| k == :ratee }
         | 
| 54 | 
            +
                    if @has_one_ratee
         | 
| 55 | 
            +
                      self.ratee_rating.create(options)
         | 
| 56 | 
            +
                    else
         | 
| 57 | 
            +
                      self.ratee_rating.creaste(options)
         | 
| 58 | 
            +
                    end
         | 
| 59 | 
            +
                  end
         | 
| 60 | 
            +
             | 
| 61 | 
            +
                  def rater_rate(options)
         | 
| 62 | 
            +
                    options.reject! { |k| k == :rater }
         | 
| 63 | 
            +
                    if @has_one_rater
         | 
| 64 | 
            +
                      self.rater_rating.create(options)
         | 
| 65 | 
            +
                    else
         | 
| 66 | 
            +
                      self.rater_ratings.create(options)
         | 
| 67 | 
            +
                    end
         | 
| 68 | 
            +
                  end
         | 
| 69 | 
            +
                end
         | 
| 70 | 
            +
              end
         | 
| 71 | 
            +
            end
         | 
    
        data/lib/ratable/models/rater.rb
    CHANGED
    
    | @@ -7,6 +7,7 @@ module Ratable | |
| 7 7 |  | 
| 8 8 | 
             
                  module ActiveRecordExtension
         | 
| 9 9 | 
             
                    def acts_as_rater(options={has_one: false})
         | 
| 10 | 
            +
                      throw "To make a model the rater and the ratee use `acts_as_ratee_and_rater`" if acts_like_ratee?
         | 
| 10 11 | 
             
                      @has_one = options[:has_one]
         | 
| 11 12 | 
             
                      include Rater
         | 
| 12 13 | 
             
                    end
         | 
| @@ -18,7 +19,6 @@ module Ratable | |
| 18 19 | 
             
                    else
         | 
| 19 20 | 
             
                      has_many :ratings, class_name: 'Ratable::Rating', dependent: :destroy, as: :rater
         | 
| 20 21 | 
             
                    end
         | 
| 21 | 
            -
                    has_one :rating_summary, class_name: 'Ratable::RatingSummary', as: :rater
         | 
| 22 22 | 
             
                  end
         | 
| 23 23 |  | 
| 24 24 | 
             
                  def ratees
         | 
    
        data/lib/ratable/version.rb
    CHANGED
    
    
| @@ -4260,3 +4260,18 @@ Started GET "/assets/star-off-6aaeebdaab93d594c005d366ce0d94fba02e7a07fd03557dbe | |
| 4260 4260 | 
             
              [1m[35m (44.0ms)[0m  INSERT INTO `schema_migrations` (version) VALUES ('20160418213647')
         | 
| 4261 4261 | 
             
              [1m[36m (43.9ms)[0m  [1mINSERT INTO `schema_migrations` (version) VALUES ('20160418191311')[0m
         | 
| 4262 4262 | 
             
              [1m[35m (43.7ms)[0m  INSERT INTO `schema_migrations` (version) VALUES ('20160418175804')
         | 
| 4263 | 
            +
              [1m[36mUser Load (0.6ms)[0m  [1mSELECT  `users`.* FROM `users`  ORDER BY `users`.`id` ASC LIMIT 1[0m
         | 
| 4264 | 
            +
              [1m[35mRatable::Rating Load (0.7ms)[0m  SELECT `ratable_ratings`.* FROM `ratable_ratings` WHERE `ratable_ratings`.`rater_id` = 1 AND `ratable_ratings`.`rater_type` = 'User'
         | 
| 4265 | 
            +
              [1m[36mRatable::Rating Load (1.1ms)[0m  [1mSELECT `ratable_ratings`.* FROM `ratable_ratings` WHERE `ratable_ratings`.`ratee_id` = 1 AND `ratable_ratings`.`ratee_type` = 'User'[0m
         | 
| 4266 | 
            +
              [1m[36mUser Load (0.7ms)[0m  [1mSELECT  `users`.* FROM `users`  ORDER BY `users`.`id` ASC LIMIT 1[0m
         | 
| 4267 | 
            +
              [1m[35mRatable::Rating Load (1.7ms)[0m  SELECT `ratable_ratings`.* FROM `ratable_ratings` WHERE `ratable_ratings`.`ratee_id` = 1 AND `ratable_ratings`.`ratee_type` = 'User'
         | 
| 4268 | 
            +
              [1m[36mUser Load (0.6ms)[0m  [1mSELECT  `users`.* FROM `users`  ORDER BY `users`.`id` ASC LIMIT 1[0m
         | 
| 4269 | 
            +
              [1m[36mUser Load (0.4ms)[0m  [1mSELECT  `users`.* FROM `users`  ORDER BY `users`.`id` ASC LIMIT 1[0m
         | 
| 4270 | 
            +
              [1m[35mRatable::Rating Load (0.6ms)[0m  SELECT `ratable_ratings`.* FROM `ratable_ratings` WHERE `ratable_ratings`.`ratee_id` = 1 AND `ratable_ratings`.`ratee_type` = 'User'
         | 
| 4271 | 
            +
              [1m[36mRatable::Rating Load (0.9ms)[0m  [1mSELECT `ratable_ratings`.* FROM `ratable_ratings` WHERE `ratable_ratings`.`rater_id` = 1 AND `ratable_ratings`.`rater_type` = 'User'[0m
         | 
| 4272 | 
            +
              [1m[35mPost Load (0.7ms)[0m  SELECT  `posts`.* FROM `posts`  ORDER BY `posts`.`id` ASC LIMIT 1
         | 
| 4273 | 
            +
              [1m[36mRatable::Rating Load (0.9ms)[0m  [1mSELECT `ratable_ratings`.* FROM `ratable_ratings` WHERE `ratable_ratings`.`ratee_id` = 1 AND `ratable_ratings`.`ratee_type` = 'Post'[0m
         | 
| 4274 | 
            +
              [1m[35mAdmin Load (0.6ms)[0m  SELECT `admins`.* FROM `admins` WHERE `admins`.`id` IN (1)
         | 
| 4275 | 
            +
              [1m[36mUser Load (0.8ms)[0m  [1mSELECT `users`.* FROM `users` WHERE `users`.`id` IN (1)[0m
         | 
| 4276 | 
            +
              [1m[35mRatable::Rating Load (0.8ms)[0m  SELECT `ratable_ratings`.* FROM `ratable_ratings` WHERE `ratable_ratings`.`ratee_id` = 1 AND `ratable_ratings`.`ratee_type` = 'Post'
         | 
| 4277 | 
            +
              [1m[36mRatable::Rating Load (0.8ms)[0m  [1mSELECT `ratable_ratings`.* FROM `ratable_ratings` WHERE `ratable_ratings`.`ratee_id` = 1 AND `ratable_ratings`.`ratee_type` = 'Post' AND `ratable_ratings`.`rater_type` = 'User' AND `ratable_ratings`.`rater_id` = 1[0m
         | 
    
        metadata
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: ratable
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0.0. | 
| 4 | 
            +
              version: 0.0.3
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - François Bélanger
         | 
| @@ -25,13 +25,13 @@ dependencies: | |
| 25 25 | 
             
                  - !ruby/object:Gem::Version
         | 
| 26 26 | 
             
                    version: '0'
         | 
| 27 27 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 28 | 
            -
              name:  | 
| 28 | 
            +
              name: jquery-rails
         | 
| 29 29 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 30 30 | 
             
                requirements:
         | 
| 31 31 | 
             
                - - ">="
         | 
| 32 32 | 
             
                  - !ruby/object:Gem::Version
         | 
| 33 33 | 
             
                    version: '0'
         | 
| 34 | 
            -
              type: : | 
| 34 | 
            +
              type: :runtime
         | 
| 35 35 | 
             
              prerelease: false
         | 
| 36 36 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 37 37 | 
             
                requirements:
         | 
| @@ -39,7 +39,7 @@ dependencies: | |
| 39 39 | 
             
                  - !ruby/object:Gem::Version
         | 
| 40 40 | 
             
                    version: '0'
         | 
| 41 41 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 42 | 
            -
              name:  | 
| 42 | 
            +
              name: mysql2
         | 
| 43 43 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 44 44 | 
             
                requirements:
         | 
| 45 45 | 
             
                - - ">="
         | 
| @@ -53,7 +53,7 @@ dependencies: | |
| 53 53 | 
             
                  - !ruby/object:Gem::Version
         | 
| 54 54 | 
             
                    version: '0'
         | 
| 55 55 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 56 | 
            -
              name:  | 
| 56 | 
            +
              name: devise
         | 
| 57 57 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 58 58 | 
             
                requirements:
         | 
| 59 59 | 
             
                - - ">="
         | 
| @@ -131,6 +131,7 @@ files: | |
| 131 131 | 
             
            - lib/ratable/engine.rb
         | 
| 132 132 | 
             
            - lib/ratable/models/ratable.rb
         | 
| 133 133 | 
             
            - lib/ratable/models/ratee.rb
         | 
| 134 | 
            +
            - lib/ratable/models/ratee_rater.rb
         | 
| 134 135 | 
             
            - lib/ratable/models/rater.rb
         | 
| 135 136 | 
             
            - lib/ratable/version.rb
         | 
| 136 137 | 
             
            - lib/tasks/ratable_tasks.rake
         |