ratable 0.0.5 → 0.0.6
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/README.rdoc +1 -1
- data/lib/ratable/engine.rb +2 -5
- data/lib/ratable/models/ratable.rb +74 -14
- data/lib/ratable/models/ratee.rb +13 -3
- data/lib/ratable/models/rater.rb +13 -3
- data/lib/ratable/version.rb +1 -1
- data/spec/dummy/app/models/user.rb +2 -1
- data/spec/dummy/log/development.log +7 -0
- metadata +3 -4
- data/lib/ratable/models/ratee_rater.rb +0 -86
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9fbc4581b1401c809f581773fd6d220d750fe198
|
4
|
+
data.tar.gz: 51069b25a2e95c8c131b5df048dc8e57b16236a9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3be43b180589b6e2bd49fcd3f5d593c8a9c44e740573b83d3de0303d3311993e76eece845878f958109fed2f2b72a8161c8b09f9e889927e7ef04200dcf32981
|
7
|
+
data.tar.gz: 21582decd51fd7460b114b0d68f583bfc81973068c8d3a0b446d27282764b138921f5c0840e40ddabb78bda459973e5a86e6dee28f774e7d9d8a2af21c3938b8
|
data/README.rdoc
CHANGED
data/lib/ratable/engine.rb
CHANGED
@@ -12,16 +12,13 @@ module Ratable
|
|
12
12
|
initializer "ratable.models.ratee" do
|
13
13
|
ActiveSupport.on_load(:active_record) do
|
14
14
|
extend Ratable::Models::Ratee::ActiveRecordExtension
|
15
|
+
include Ratable::Models::Ratee::ActiveRecordInclusion
|
15
16
|
end
|
16
17
|
end
|
17
18
|
initializer "ratable.models.rater" do
|
18
19
|
ActiveSupport.on_load(:active_record) do
|
19
20
|
extend Ratable::Models::Rater::ActiveRecordExtension
|
20
|
-
|
21
|
-
end
|
22
|
-
initializer "ratable.models.ratee_rater" do
|
23
|
-
ActiveSupport.on_load(:active_record) do
|
24
|
-
extend Ratable::Models::RateeRater::ActiveRecordExtension
|
21
|
+
include Ratable::Models::Rater::ActiveRecordInclusion
|
25
22
|
end
|
26
23
|
end
|
27
24
|
config.generators do |g|
|
@@ -1,37 +1,97 @@
|
|
1
1
|
module Ratable
|
2
2
|
module Models
|
3
3
|
module Ratable
|
4
|
+
extend ActiveSupport::Concern
|
4
5
|
|
5
6
|
module ActiveRecordExtension
|
7
|
+
def acts_as_ratable(options={has_one_ratee: false, has_one_rater: false, self_rate: false})
|
8
|
+
@has_one_ratee = options[:has_one_ratee]
|
9
|
+
@has_one_rater = options[:has_one_rater]
|
10
|
+
@self_rate = options[:self_rate]
|
11
|
+
include Ratable
|
12
|
+
end
|
13
|
+
|
6
14
|
def acts_like_ratable?
|
7
|
-
|
8
|
-
classes.include?(Ratee) || classes.include?(Rater)
|
15
|
+
ancestors.include?(Ratable)
|
9
16
|
end
|
17
|
+
end
|
10
18
|
|
11
|
-
|
12
|
-
|
19
|
+
module ActiveRecordInclusion
|
20
|
+
def acts_like_ratable?
|
21
|
+
ancestors.include?(Ratable)
|
13
22
|
end
|
23
|
+
end
|
14
24
|
|
15
|
-
|
16
|
-
|
25
|
+
included do
|
26
|
+
if @has_one_ratee
|
27
|
+
has_one :ratee_rating, class_name: 'Ratable::Rating', dependent: :destroy, as: :ratee
|
28
|
+
else
|
29
|
+
has_many :ratee_ratings, -> { order(updated_at: :desc) }, class_name: 'Ratable::Rating', dependent: :destroy, as: :ratee
|
30
|
+
end
|
31
|
+
if @has_one_rater
|
32
|
+
has_one :rater_rating, class_name: 'Ratable::Rating', dependent: :destroy, as: :rater
|
33
|
+
else
|
34
|
+
has_many :rater_ratings, -> { order(updated_at: :desc) }, class_name: 'Ratable::Rating', dependent: :destroy, as: :rater
|
17
35
|
end
|
18
36
|
end
|
19
37
|
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
38
|
+
def ratee_rating_average
|
39
|
+
if @has_one_ratee
|
40
|
+
::Ratable::RatingAverage.new(ratings: ratee_rating, ratee: self)
|
41
|
+
else
|
42
|
+
::Ratable::RatingAverage.new(ratings: ratee_rating, ratee: self)
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
def rater_rating_average
|
47
|
+
if @has_one_rater
|
48
|
+
::Ratable::RatingAverage.new(ratings: rater_rating, rater: self)
|
49
|
+
else
|
50
|
+
::Ratable::RatingAverage.new(ratings: rater_ratings, rater: self)
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
def ratees
|
55
|
+
if @has_one_ratee
|
56
|
+
rater_rating.ratee
|
57
|
+
else
|
58
|
+
rater_rating.includes(:ratee).collect { |rating| rating.ratee }
|
24
59
|
end
|
60
|
+
end
|
25
61
|
|
26
|
-
|
27
|
-
|
62
|
+
def raters
|
63
|
+
if @has_one_rater
|
64
|
+
ratee_rating.rater
|
65
|
+
else
|
66
|
+
ratee_ratings.includes(:rater).collect { |rating| rating.rater }
|
28
67
|
end
|
68
|
+
end
|
29
69
|
|
30
|
-
|
31
|
-
|
70
|
+
def ratee_rate(options={})
|
71
|
+
options.reject! { |k| k == :ratee }
|
72
|
+
if @has_one_ratee
|
73
|
+
ratee_rating.create(options)
|
74
|
+
else
|
75
|
+
ratee_rating.create(options)
|
32
76
|
end
|
33
77
|
end
|
34
78
|
|
79
|
+
def rater_rate(options)
|
80
|
+
options.reject! { |k| k == :rater }
|
81
|
+
if @has_one_rater
|
82
|
+
rater_rating.create(options)
|
83
|
+
else
|
84
|
+
rater_ratings.create(options)
|
85
|
+
end
|
86
|
+
end
|
87
|
+
|
88
|
+
def rate(options)
|
89
|
+
if options[:rater]
|
90
|
+
ratee_rate(options)
|
91
|
+
elsif options[:ratee]
|
92
|
+
rater_rate(options)
|
93
|
+
end
|
94
|
+
end
|
35
95
|
end
|
36
96
|
end
|
37
97
|
end
|
data/lib/ratable/models/ratee.rb
CHANGED
@@ -7,10 +7,20 @@ module Ratable
|
|
7
7
|
|
8
8
|
module ActiveRecordExtension
|
9
9
|
def acts_as_ratee(options={has_one: false})
|
10
|
-
raise "To make a model the rater and the ratee use `
|
10
|
+
raise "To make a model the rater and the ratee use `acts_as_ratable`" if acts_like_rater?
|
11
11
|
@has_one = options[:has_one]
|
12
12
|
include Ratee
|
13
13
|
end
|
14
|
+
|
15
|
+
def acts_like_ratee?
|
16
|
+
ancestors.include?(Ratee)
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
module ActiveRecordInclusion
|
21
|
+
def acts_like_ratee?
|
22
|
+
self.class.ancestors.include?(Ratee)
|
23
|
+
end
|
14
24
|
end
|
15
25
|
|
16
26
|
included do
|
@@ -40,9 +50,9 @@ module Ratable
|
|
40
50
|
def rate(options={})
|
41
51
|
options.reject! { |k| k == :ratee }
|
42
52
|
if @has_one
|
43
|
-
|
53
|
+
rating.create(options)
|
44
54
|
else
|
45
|
-
|
55
|
+
ratings.create(options)
|
46
56
|
end
|
47
57
|
end
|
48
58
|
|
data/lib/ratable/models/rater.rb
CHANGED
@@ -7,10 +7,20 @@ module Ratable
|
|
7
7
|
|
8
8
|
module ActiveRecordExtension
|
9
9
|
def acts_as_rater(options={has_one: false})
|
10
|
-
raise "To make a model the rater and the ratee use `
|
10
|
+
raise "To make a model the rater and the ratee use `acts_as_ratable`" if acts_like_ratee?
|
11
11
|
@has_one = options[:has_one]
|
12
12
|
include Rater
|
13
13
|
end
|
14
|
+
|
15
|
+
def acts_like_rater?
|
16
|
+
ancestors.include?(Rater)
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
module ActiveRecordInclusion
|
21
|
+
def acts_like_rater?
|
22
|
+
self.class.ancestors.include?(Rater)
|
23
|
+
end
|
14
24
|
end
|
15
25
|
|
16
26
|
included do
|
@@ -40,9 +50,9 @@ module Ratable
|
|
40
50
|
def rate(options={})
|
41
51
|
options.reject! { |k| k == :rater }
|
42
52
|
if @has_one
|
43
|
-
|
53
|
+
rating.create(options)
|
44
54
|
else
|
45
|
-
|
55
|
+
ratings.create(options)
|
46
56
|
end
|
47
57
|
end
|
48
58
|
|
data/lib/ratable/version.rb
CHANGED
@@ -4291,3 +4291,10 @@ Started GET "/assets/star-off-6aaeebdaab93d594c005d366ce0d94fba02e7a07fd03557dbe
|
|
4291
4291
|
[1m[36mPost Load (0.6ms)[0m [1mSELECT `posts`.* FROM `posts` ORDER BY `posts`.`id` ASC LIMIT 1[0m
|
4292
4292
|
[1m[35m (0.7ms)[0m SELECT AVG(`ratable_ratings`.`value`) FROM `ratable_ratings` WHERE `ratable_ratings`.`ratee_id` = 1 AND `ratable_ratings`.`ratee_type` = 'Post'
|
4293
4293
|
[1m[36mRatable::Rating Load (1.0ms)[0m [1mSELECT `ratable_ratings`.* FROM `ratable_ratings` WHERE `ratable_ratings`.`ratee_id` = 1 AND `ratable_ratings`.`ratee_type` = 'Post'[0m
|
4294
|
+
[1m[36mUser Load (38.0ms)[0m [1mSELECT `users`.* FROM `users`[0m
|
4295
|
+
[1m[35mUser Load (1.7ms)[0m SELECT `users`.* FROM `users` ORDER BY `users`.`id` ASC LIMIT 1
|
4296
|
+
[1m[36mRatable::Rating Load (23.0ms)[0m [1mSELECT `ratable_ratings`.* FROM `ratable_ratings` WHERE `ratable_ratings`.`ratee_id` = 1 AND `ratable_ratings`.`ratee_type` = 'User' ORDER BY `ratable_ratings`.`updated_at` DESC[0m
|
4297
|
+
[1m[35mRatable::Rating Load (1.1ms)[0m SELECT `ratable_ratings`.* FROM `ratable_ratings` WHERE `ratable_ratings`.`rater_id` = 1 AND `ratable_ratings`.`rater_type` = 'User' ORDER BY `ratable_ratings`.`updated_at` DESC
|
4298
|
+
[1m[36mUser Load (0.6ms)[0m [1mSELECT `users`.* FROM `users` ORDER BY `users`.`id` ASC LIMIT 1[0m
|
4299
|
+
[1m[35mRatable::Rating Load (0.9ms)[0m SELECT `ratable_ratings`.* FROM `ratable_ratings` WHERE `ratable_ratings`.`ratee_id` = 1 AND `ratable_ratings`.`ratee_type` = 'User' ORDER BY `ratable_ratings`.`updated_at` DESC
|
4300
|
+
[1m[36mRatable::Rating Load (1.3ms)[0m [1mSELECT `ratable_ratings`.* FROM `ratable_ratings` WHERE `ratable_ratings`.`rater_id` = 1 AND `ratable_ratings`.`rater_type` = 'User' ORDER BY `ratable_ratings`.`updated_at` DESC[0m
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
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.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- François Bélanger
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-05-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -133,7 +133,6 @@ files:
|
|
133
133
|
- lib/ratable/engine.rb
|
134
134
|
- lib/ratable/models/ratable.rb
|
135
135
|
- lib/ratable/models/ratee.rb
|
136
|
-
- lib/ratable/models/ratee_rater.rb
|
137
136
|
- lib/ratable/models/rater.rb
|
138
137
|
- lib/ratable/version.rb
|
139
138
|
- lib/tasks/ratable_tasks.rake
|
@@ -609,7 +608,7 @@ homepage: https://github.com/frank184/ratable
|
|
609
608
|
licenses:
|
610
609
|
- MIT
|
611
610
|
metadata: {}
|
612
|
-
post_install_message:
|
611
|
+
post_install_message: Feel free to contribute! https://www.github.com/frank184/ratable
|
613
612
|
rdoc_options: []
|
614
613
|
require_paths:
|
615
614
|
- lib
|
@@ -1,86 +0,0 @@
|
|
1
|
-
module Ratable
|
2
|
-
module Models
|
3
|
-
module RateeRater
|
4
|
-
extend ActiveSupport::Concern
|
5
|
-
|
6
|
-
attr_reader :has_one_ratee, :has_one_rater
|
7
|
-
|
8
|
-
module ActiveRecordExtension
|
9
|
-
def acts_as_ratee_and_rater(options={has_one_ratee: false, has_one_rater: false})
|
10
|
-
@has_one_ratee = options[:has_one_ratee]
|
11
|
-
@has_one_rater = options[:has_one_rater]
|
12
|
-
include RateeRater
|
13
|
-
end
|
14
|
-
|
15
|
-
def acts_as_rater_and_ratee(options={has_one_ratee: false, has_one_rater: false})
|
16
|
-
@has_one_ratee = options[:has_one_ratee]
|
17
|
-
@has_one_rater = options[:has_one_rater]
|
18
|
-
include RateeRater
|
19
|
-
end
|
20
|
-
end
|
21
|
-
|
22
|
-
included do
|
23
|
-
if @has_one_ratee
|
24
|
-
has_one :ratee_rating, class_name: 'Ratable::Rating', dependent: :destroy, as: :ratee
|
25
|
-
else
|
26
|
-
has_many :ratee_ratings, -> { order(updated_at: :desc) }, class_name: 'Ratable::Rating', dependent: :destroy, as: :ratee
|
27
|
-
end
|
28
|
-
if @has_one_rater
|
29
|
-
has_one :rater_rating, class_name: 'Ratable::Rating', dependent: :destroy, as: :rater
|
30
|
-
else
|
31
|
-
has_many :rater_ratings, -> { order(updated_at: :desc) }, class_name: 'Ratable::Rating', dependent: :destroy, as: :rater
|
32
|
-
end
|
33
|
-
end
|
34
|
-
|
35
|
-
def ratee_rating_average
|
36
|
-
if @has_one_ratee
|
37
|
-
::Ratable::RatingAverage.new(ratings: ratee_rating, ratee: self)
|
38
|
-
else
|
39
|
-
::Ratable::RatingAverage.new(ratings: ratee_rating, ratee: self)
|
40
|
-
end
|
41
|
-
end
|
42
|
-
|
43
|
-
def rater_rating_average
|
44
|
-
if @has_one_rater
|
45
|
-
::Ratable::RatingAverage.new(ratings: rater_rating, rater: self)
|
46
|
-
else
|
47
|
-
::Ratable::RatingAverage.new(ratings: rater_ratings, rater: self)
|
48
|
-
end
|
49
|
-
end
|
50
|
-
|
51
|
-
def ratees
|
52
|
-
if @has_one_ratee
|
53
|
-
rater_rating.ratee
|
54
|
-
else
|
55
|
-
rater_rating.includes(:ratee).collect { |rating| rating.ratee }
|
56
|
-
end
|
57
|
-
end
|
58
|
-
|
59
|
-
def raters
|
60
|
-
if @has_one_rater
|
61
|
-
ratee_rating.rater
|
62
|
-
else
|
63
|
-
ratee_ratings.includes(:rater).collect { |rating| rating.rater }
|
64
|
-
end
|
65
|
-
end
|
66
|
-
|
67
|
-
def ratee_rate(options={})
|
68
|
-
options.reject! { |k| k == :ratee }
|
69
|
-
if @has_one_ratee
|
70
|
-
self.ratee_rating.create(options)
|
71
|
-
else
|
72
|
-
self.ratee_rating.creaste(options)
|
73
|
-
end
|
74
|
-
end
|
75
|
-
|
76
|
-
def rater_rate(options)
|
77
|
-
options.reject! { |k| k == :rater }
|
78
|
-
if @has_one_rater
|
79
|
-
self.rater_rating.create(options)
|
80
|
-
else
|
81
|
-
self.rater_ratings.create(options)
|
82
|
-
end
|
83
|
-
end
|
84
|
-
end
|
85
|
-
end
|
86
|
-
end
|