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