ratable 0.0.4 → 0.0.5

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