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 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