ratable 0.0.4 → 0.0.5

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: 0b73a6b2a07a0e7148f91bdfa503d6d849e0621e
4
- data.tar.gz: 1f5ee31f7d742e84326135d5c4042be6cfe0fc5c
3
+ metadata.gz: 470dfee1c88fb9bb6abffaeb5b94b495cf130ae6
4
+ data.tar.gz: 7bc55d4ff107ed5027cdfae16b8cf84890275da7
5
5
  SHA512:
6
- metadata.gz: 35e0271f3f1855f1fb22a53e546f97554c9ca98367d25390b478fa11119c96887d629cb5befc955ba39a3261ba8a8b8bf4b2ee1fc62f494432568819f2bfff62
7
- data.tar.gz: 5e4383b223bf6cf7ae9a988abb0d7226b9f96ddf0a8de514a3a0f00d5b5bf76a4e1f170b001ab3ff78e8fa9a72a464a8f205fc0300e4e0665a1bb1a775dd33e8
6
+ metadata.gz: 79a3ec8426be004245a8a30f8e10fa211f9a361ff35c0206645e485bfd13e7aa96d601234e44d7e4c425943adc4d52b83b7735f293aa61ea4ba882d40c414a92
7
+ data.tar.gz: 209666038eb795fa6751c0f8b22738cf46744ee80f69a675e6b7e1a442aca226665dfeda46edb513b5316afa0071d90722ac465223637628c258b869601f7b15
@@ -7,8 +7,5 @@ module Ratable
7
7
 
8
8
  scope :by_ratee, -> (ratee) { where(ratee: ratee) }
9
9
  scope :by_rater, -> (rater) { where(rater: rater) }
10
-
11
- def average
12
- end
13
10
  end
14
11
  end
@@ -0,0 +1,14 @@
1
+ module Ratable
2
+ class RatingAverage
3
+ include ActiveModel::Model
4
+
5
+ attr_accessor :ratings, :value, :rater, :ratee
6
+
7
+ def initialize(attributes={})
8
+ attributes.reject! { |k| k == :value }
9
+ attributes.each { |k,v| send("#{k}=", v) }
10
+ @value = @ratings.average(:value).to_i
11
+ end
12
+
13
+ end
14
+ end
@@ -0,0 +1 @@
1
+ <div class="rating-average" data-rating="<%= rating_average.value %>"></div>
@@ -3,5 +3,6 @@ class Ratable::ViewsGenerator < Rails::Generators::Base
3
3
 
4
4
  def copy_views
5
5
  directory('ratings', 'app/views/ratable/ratings')
6
+ directory('rating_averages', 'app/views/ratable/rating_averages')
6
7
  end
7
8
  end
@@ -17,7 +17,15 @@ module Ratable
17
17
  if @has_one
18
18
  has_one :rating, class_name: 'Ratable::Rating', dependent: :destroy, as: :ratee
19
19
  else
20
- has_many :ratings, class_name: 'Ratable::Rating', dependent: :destroy, as: :ratee
20
+ has_many :ratings, -> { order(updated_at: :desc) }, class_name: 'Ratable::Rating', dependent: :destroy, as: :ratee
21
+ end
22
+ end
23
+
24
+ def rating_average
25
+ if @has_one
26
+ ::Ratable::RatingAverage.new(ratings: rating, ratee: self)
27
+ else
28
+ ::Ratable::RatingAverage.new(ratings: ratings, ratee: self)
21
29
  end
22
30
  end
23
31
 
@@ -23,12 +23,28 @@ module Ratable
23
23
  if @has_one_ratee
24
24
  has_one :ratee_rating, class_name: 'Ratable::Rating', dependent: :destroy, as: :ratee
25
25
  else
26
- has_many :ratee_ratings, class_name: 'Ratable::Rating', dependent: :destroy, as: :ratee
26
+ has_many :ratee_ratings, -> { order(updated_at: :desc) }, class_name: 'Ratable::Rating', dependent: :destroy, as: :ratee
27
27
  end
28
28
  if @has_one_rater
29
29
  has_one :rater_rating, class_name: 'Ratable::Rating', dependent: :destroy, as: :rater
30
30
  else
31
- has_many :rater_ratings, class_name: 'Ratable::Rating', dependent: :destroy, as: :rater
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)
32
48
  end
33
49
  end
34
50
 
@@ -17,7 +17,15 @@ module Ratable
17
17
  if @has_one
18
18
  has_one :rating, class_name: 'Ratable::Rating', dependent: :destroy, as: :rater
19
19
  else
20
- has_many :ratings, class_name: 'Ratable::Rating', dependent: :destroy, as: :rater
20
+ has_many :ratings, -> { order(updated_at: :desc) }, class_name: 'Ratable::Rating', dependent: :destroy, as: :rater
21
+ end
22
+ end
23
+
24
+ def rating_average
25
+ if @has_one
26
+ ::Ratable::RatingAverage.new(ratings: rating, rater: self)
27
+ else
28
+ ::Ratable::RatingAverage.new(ratings: ratings, rater: self)
21
29
  end
22
30
  end
23
31
 
@@ -1,3 +1,3 @@
1
1
  module Ratable
2
- VERSION = '0.0.4'
2
+ VERSION = '0.0.5'
3
3
  end
@@ -4,6 +4,5 @@ class User < ActiveRecord::Base
4
4
  devise :database_authenticatable, :registerable,
5
5
  :recoverable, :rememberable, :trackable, :validatable
6
6
 
7
- acts_as_ratee
8
- acts_as_rater
7
+ acts_as_ratee_and_rater
9
8
  end
@@ -4275,3 +4275,19 @@ Started GET "/assets/star-off-6aaeebdaab93d594c005d366ce0d94fba02e7a07fd03557dbe
4275
4275
  User Load (0.8ms) SELECT `users`.* FROM `users` WHERE `users`.`id` IN (1)
4276
4276
  Ratable::Rating Load (0.8ms) SELECT `ratable_ratings`.* FROM `ratable_ratings` WHERE `ratable_ratings`.`ratee_id` = 1 AND `ratable_ratings`.`ratee_type` = 'Post'
4277
4277
  Ratable::Rating Load (0.8ms) SELECT `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
4278
+ Post Load (0.5ms) SELECT `posts`.* FROM `posts` ORDER BY `posts`.`id` ASC LIMIT 1
4279
+ Ratable::Rating Load (0.8ms) SELECT `ratable_ratings`.* FROM `ratable_ratings` WHERE `ratable_ratings`.`ratee_id` = 1 AND `ratable_ratings`.`ratee_type` = 'Post'
4280
+ Post Load (0.7ms) SELECT `posts`.* FROM `posts` ORDER BY `posts`.`id` ASC LIMIT 1
4281
+ Post Load (0.6ms) SELECT `posts`.* FROM `posts` ORDER BY `posts`.`id` ASC LIMIT 1
4282
+ Post Load (0.7ms) SELECT `posts`.* FROM `posts` ORDER BY `posts`.`id` ASC LIMIT 1
4283
+ Post Load (0.6ms) SELECT `posts`.* FROM `posts` ORDER BY `posts`.`id` ASC LIMIT 1
4284
+ Post Load (0.8ms) SELECT `posts`.* FROM `posts` ORDER BY `posts`.`id` ASC LIMIT 1
4285
+  (0.8ms) SELECT AVG(`ratable_ratings`.`value`) FROM `ratable_ratings` WHERE `ratable_ratings`.`ratee_id` = 1 AND `ratable_ratings`.`ratee_type` = 'Post'
4286
+ Ratable::Rating Load (0.7ms) SELECT `ratable_ratings`.* FROM `ratable_ratings` WHERE `ratable_ratings`.`ratee_id` = 1 AND `ratable_ratings`.`ratee_type` = 'Post'
4287
+ Post Load (0.5ms) SELECT `posts`.* FROM `posts` ORDER BY `posts`.`id` ASC LIMIT 1
4288
+  (1.6ms) SELECT AVG(`ratable_ratings`.`value`) FROM `ratable_ratings` WHERE `ratable_ratings`.`ratee_id` = 1 AND `ratable_ratings`.`ratee_type` = 'Post'
4289
+ Post Load (0.6ms) SELECT `posts`.* FROM `posts` ORDER BY `posts`.`id` ASC LIMIT 1
4290
+  (0.8ms) SELECT AVG(`ratable_ratings`.`value`) FROM `ratable_ratings` WHERE `ratable_ratings`.`ratee_id` = 1 AND `ratable_ratings`.`ratee_type` = 'Post'
4291
+ Post Load (0.6ms) SELECT `posts`.* FROM `posts` ORDER BY `posts`.`id` ASC LIMIT 1
4292
+  (0.7ms) SELECT AVG(`ratable_ratings`.`value`) FROM `ratable_ratings` WHERE `ratable_ratings`.`ratee_id` = 1 AND `ratable_ratings`.`ratee_type` = 'Post'
4293
+ Ratable::Rating Load (1.0ms) SELECT `ratable_ratings`.* FROM `ratable_ratings` WHERE `ratable_ratings`.`ratee_id` = 1 AND `ratable_ratings`.`ratee_type` = 'Post'
@@ -0,0 +1,5 @@
1
+ FactoryGirl.define do
2
+ factory :ratable_rating, class: 'Ratable::Rating' do
3
+
4
+ end
5
+ end
@@ -0,0 +1,5 @@
1
+ FactoryGirl.define do
2
+ factory :ratable_rating_average, class: 'Ratable::RatingAverage' do
3
+
4
+ end
5
+ end
@@ -0,0 +1,7 @@
1
+ require 'rails_helper'
2
+
3
+ module Ratable
4
+ RSpec.describe RatingAverage, type: :model do
5
+ pending "add some examples to (or delete) #{__FILE__}"
6
+ end
7
+ end
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
4
+ version: 0.0.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - François Bélanger
@@ -122,6 +122,8 @@ files:
122
122
  - app/assets/javascripts/ratable.js.erb
123
123
  - app/assets/stylesheets/ratable.scss
124
124
  - app/models/ratable/rating.rb
125
+ - app/models/ratable/rating_average.rb
126
+ - app/views/ratable/rating_averages/_rating_average.html.erb
125
127
  - app/views/ratable/ratings/_rating.html.erb
126
128
  - db/migrate/20160418175804_create_ratable_ratings.rb
127
129
  - lib/generators/ratable/install_generator.rb
@@ -596,7 +598,10 @@ files:
596
598
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/zl/zlj-FK9QDxF0uO6x4ka6CN3aSaHs5bGTuJm_JMKstaY.cache
597
599
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/zp/zpSERRztqsKIBHLay1Pa74kqqJqZJSA3kTjL1BWH40I.cache
598
600
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/zx/zxDhIDb-lPPulK9xGZ0mW_Yskyocslvalf6NF5Ys7Oo.cache
599
- - spec/models/rating_spec.rb
601
+ - spec/factories/ratable_rating.rb
602
+ - spec/factories/ratable_rating_averages.rb
603
+ - spec/models/ratable/rating_average_spec.rb
604
+ - spec/models/ratable/rating_spec.rb
600
605
  - spec/rails_helper.rb
601
606
  - spec/spec_helper.rb
602
607
  - spec/test_spec.rb
@@ -1090,4 +1095,7 @@ test_files:
1090
1095
  - spec/dummy/README.rdoc
1091
1096
  - spec/rails_helper.rb
1092
1097
  - spec/test_spec.rb
1093
- - spec/models/rating_spec.rb
1098
+ - spec/models/ratable/rating_average_spec.rb
1099
+ - spec/models/ratable/rating_spec.rb
1100
+ - spec/factories/ratable_rating_averages.rb
1101
+ - spec/factories/ratable_rating.rb