ratable 0.0.5 → 0.0.6
Sign up to get free protection for your applications and to get access to all the features.
- 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
|