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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 470dfee1c88fb9bb6abffaeb5b94b495cf130ae6
4
- data.tar.gz: 7bc55d4ff107ed5027cdfae16b8cf84890275da7
3
+ metadata.gz: 9fbc4581b1401c809f581773fd6d220d750fe198
4
+ data.tar.gz: 51069b25a2e95c8c131b5df048dc8e57b16236a9
5
5
  SHA512:
6
- metadata.gz: 79a3ec8426be004245a8a30f8e10fa211f9a361ff35c0206645e485bfd13e7aa96d601234e44d7e4c425943adc4d52b83b7735f293aa61ea4ba882d40c414a92
7
- data.tar.gz: 209666038eb795fa6751c0f8b22738cf46744ee80f69a675e6b7e1a442aca226665dfeda46edb513b5316afa0071d90722ac465223637628c258b869601f7b15
6
+ metadata.gz: 3be43b180589b6e2bd49fcd3f5d593c8a9c44e740573b83d3de0303d3311993e76eece845878f958109fed2f2b72a8161c8b09f9e889927e7ef04200dcf32981
7
+ data.tar.gz: 21582decd51fd7460b114b0d68f583bfc81973068c8d3a0b446d27282764b138921f5c0840e40ddabb78bda459973e5a86e6dee28f774e7d9d8a2af21c3938b8
data/README.rdoc CHANGED
@@ -1,3 +1,3 @@
1
1
  = Ratable
2
2
 
3
- This project rocks and uses MIT-LICENSE.
3
+ This project rocks and uses MIT-LICENSE.
@@ -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
- end
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
- classes = ancestors
8
- classes.include?(Ratee) || classes.include?(Rater)
15
+ ancestors.include?(Ratable)
9
16
  end
17
+ end
10
18
 
11
- def acts_like_ratee?
12
- ancestors.include?(Ratee)
19
+ module ActiveRecordInclusion
20
+ def acts_like_ratable?
21
+ ancestors.include?(Ratable)
13
22
  end
23
+ end
14
24
 
15
- def acts_like_rater?
16
- ancestors.include?(Rater)
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
- module ActiveRecordInclusion
21
- def acts_like_ratable?
22
- classes = self.class.ancestors
23
- classes.include?(Ratee) || classes.include?(Rater)
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
- def acts_like_ratee?
27
- self.class.ancestors.include?(Ratee)
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
- def acts_like_rater?
31
- self.class.ancestors.include?(Rater)
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
@@ -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 `acts_as_ratee_and_rater`" if acts_like_rater?
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
- self.rating.create(options)
53
+ rating.create(options)
44
54
  else
45
- self.ratings.create(options)
55
+ ratings.create(options)
46
56
  end
47
57
  end
48
58
 
@@ -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 `acts_as_ratee_and_rater`" if acts_like_ratee?
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
- self.rating.create(options)
53
+ rating.create(options)
44
54
  else
45
- self.ratings.create(options)
55
+ ratings.create(options)
46
56
  end
47
57
  end
48
58
 
@@ -1,3 +1,3 @@
1
1
  module Ratable
2
- VERSION = '0.0.5'
2
+ VERSION = '0.0.6'
3
3
  end
@@ -4,5 +4,6 @@ class User < ActiveRecord::Base
4
4
  devise :database_authenticatable, :registerable,
5
5
  :recoverable, :rememberable, :trackable, :validatable
6
6
 
7
- acts_as_ratee_and_rater
7
+ # acts_as_ratee_and_rater
8
+ acts_as_ratable # omg that was so obvious
8
9
  end
@@ -4291,3 +4291,10 @@ Started GET "/assets/star-off-6aaeebdaab93d594c005d366ce0d94fba02e7a07fd03557dbe
4291
4291
  Post Load (0.6ms) SELECT `posts`.* FROM `posts` ORDER BY `posts`.`id` ASC LIMIT 1
4292
4292
   (0.7ms) SELECT AVG(`ratable_ratings`.`value`) FROM `ratable_ratings` WHERE `ratable_ratings`.`ratee_id` = 1 AND `ratable_ratings`.`ratee_type` = 'Post'
4293
4293
  Ratable::Rating Load (1.0ms) SELECT `ratable_ratings`.* FROM `ratable_ratings` WHERE `ratable_ratings`.`ratee_id` = 1 AND `ratable_ratings`.`ratee_type` = 'Post'
4294
+ User Load (38.0ms) SELECT `users`.* FROM `users`
4295
+ User Load (1.7ms) SELECT `users`.* FROM `users` ORDER BY `users`.`id` ASC LIMIT 1
4296
+ Ratable::Rating Load (23.0ms) 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
4297
+ Ratable::Rating Load (1.1ms) 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
+ User Load (0.6ms) SELECT `users`.* FROM `users` ORDER BY `users`.`id` ASC LIMIT 1
4299
+ Ratable::Rating Load (0.9ms) 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
+ Ratable::Rating Load (1.3ms) 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
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.5
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-04-26 00:00:00.000000000 Z
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