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
|