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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 8de164f5d06b448bfc98577762846acbdc799041
4
- data.tar.gz: 29a25e193edd57825709c465a800a3025b728715
3
+ metadata.gz: 0b37b427f57776006d941b8f962e0ac53c332972
4
+ data.tar.gz: 4784df61824db2de0351693663283bd173713e82
5
5
  SHA512:
6
- metadata.gz: 6440686c6effdb6c0ceaec022320afb638b1052dcadbc145b5ce56d65674280d83d85e160251c380f3e99cdef81c9120a1f46565b9f587ad84bb9485904fdcef
7
- data.tar.gz: a9cfcf73aabf987b78b4ac456bb6f895e72a66e61e09e18e3e600f1fa4396c87747f351491c7607345f5cbfcb71b31489251080fadabbd9424e18f23ca37252a
6
+ metadata.gz: 0bc3c2714db3e79fba8b448776172340c0717b17fc7bcf59ea5942fab553456f4f5458cc4b16c16eaad6d9cef22de8de09b38c93f3651b6a72ea46dcf5c2fa37
7
+ data.tar.gz: bc620147f939dbc11733389ea429f6b5f3c9c0276fce72d54a64d991ca3caaf0780caf12ab800df9610092d37eb82dd17a812d037151ab6b6a4cb1d9a1668f2f
@@ -5,5 +5,6 @@ module Ratable
5
5
  autoload :Ratable, 'ratable/models/ratable'
6
6
  autoload :Ratee, 'ratable/models/ratee'
7
7
  autoload :Rater, 'ratable/models/rater'
8
+ autoload :RateeRater, 'ratable/models/ratee_rater'
8
9
  end
9
10
  end
@@ -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.ratee" do
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'
@@ -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
- if @has_one
17
- has_one :rating, class_name: 'Ratable::Rating', dependent: :destroy, as: :ratee
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
- has_many :ratings, class_name: 'Ratable::Rating', dependent: :destroy, as: :ratee
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
- if @has_one
26
- rating.rater
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
- ratings.includes(:rater).collect { |rating| rating.rater }
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
- options.reject! { |k| k == :ratee }
34
- if @has_one
35
- self.rating.create(options)
36
- else
37
- self.ratings.create(options)
38
- end
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
@@ -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
@@ -1,3 +1,3 @@
1
1
  module Ratable
2
- VERSION = '0.0.2'
2
+ VERSION = '0.0.3'
3
3
  end
@@ -4,5 +4,5 @@ class User < ActiveRecord::Base
4
4
  devise :database_authenticatable, :registerable,
5
5
  :recoverable, :rememberable, :trackable, :validatable
6
6
 
7
- acts_as_rater
7
+ acts_as_ratee_and_rater
8
8
  end
@@ -4260,3 +4260,18 @@ Started GET "/assets/star-off-6aaeebdaab93d594c005d366ce0d94fba02e7a07fd03557dbe
4260
4260
   (44.0ms) INSERT INTO `schema_migrations` (version) VALUES ('20160418213647')
4261
4261
   (43.9ms) INSERT INTO `schema_migrations` (version) VALUES ('20160418191311')
4262
4262
   (43.7ms) INSERT INTO `schema_migrations` (version) VALUES ('20160418175804')
4263
+ User Load (0.6ms) SELECT `users`.* FROM `users` ORDER BY `users`.`id` ASC LIMIT 1
4264
+ Ratable::Rating Load (0.7ms) SELECT `ratable_ratings`.* FROM `ratable_ratings` WHERE `ratable_ratings`.`rater_id` = 1 AND `ratable_ratings`.`rater_type` = 'User'
4265
+ Ratable::Rating Load (1.1ms) SELECT `ratable_ratings`.* FROM `ratable_ratings` WHERE `ratable_ratings`.`ratee_id` = 1 AND `ratable_ratings`.`ratee_type` = 'User'
4266
+ User Load (0.7ms) SELECT `users`.* FROM `users` ORDER BY `users`.`id` ASC LIMIT 1
4267
+ Ratable::Rating Load (1.7ms) SELECT `ratable_ratings`.* FROM `ratable_ratings` WHERE `ratable_ratings`.`ratee_id` = 1 AND `ratable_ratings`.`ratee_type` = 'User'
4268
+ User Load (0.6ms) SELECT `users`.* FROM `users` ORDER BY `users`.`id` ASC LIMIT 1
4269
+ User Load (0.4ms) SELECT `users`.* FROM `users` ORDER BY `users`.`id` ASC LIMIT 1
4270
+ Ratable::Rating Load (0.6ms) SELECT `ratable_ratings`.* FROM `ratable_ratings` WHERE `ratable_ratings`.`ratee_id` = 1 AND `ratable_ratings`.`ratee_type` = 'User'
4271
+ Ratable::Rating Load (0.9ms) SELECT `ratable_ratings`.* FROM `ratable_ratings` WHERE `ratable_ratings`.`rater_id` = 1 AND `ratable_ratings`.`rater_type` = 'User'
4272
+ Post Load (0.7ms) SELECT `posts`.* FROM `posts` ORDER BY `posts`.`id` ASC LIMIT 1
4273
+ Ratable::Rating Load (0.9ms) SELECT `ratable_ratings`.* FROM `ratable_ratings` WHERE `ratable_ratings`.`ratee_id` = 1 AND `ratable_ratings`.`ratee_type` = 'Post'
4274
+ Admin Load (0.6ms) SELECT `admins`.* FROM `admins` WHERE `admins`.`id` IN (1)
4275
+ User Load (0.8ms) SELECT `users`.* FROM `users` WHERE `users`.`id` IN (1)
4276
+ Ratable::Rating Load (0.8ms) SELECT `ratable_ratings`.* FROM `ratable_ratings` WHERE `ratable_ratings`.`ratee_id` = 1 AND `ratable_ratings`.`ratee_type` = 'Post'
4277
+ Ratable::Rating Load (0.8ms) SELECT `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
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.2
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: mysql2
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: :development
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: devise
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: jquery-rails
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