seems_rateable 1.0.12 → 1.0.13

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: 75166b76cc03e894fbb7d2d63cd807acdafc4816
4
- data.tar.gz: d8353a22a2e5cfa5ddba077445e4900d3dd4afe3
3
+ metadata.gz: 5da25869fc6cb9fd1c221b6f6e4a91863e05b199
4
+ data.tar.gz: e6a95e44392d188f812290df55b638441b4b094e
5
5
  SHA512:
6
- metadata.gz: f6c2b82a4cee9ac55e02150db1142bc49d4f0c1cf00d7fa06e5c4f8e389b21cc090b5f5289d11ae240038cb140ccae116a6e4b1e82e468775fe0d55e9380b0f2
7
- data.tar.gz: 9a250d496faf719be8e82823536e4ea25774f5ba8c688274e3640261d864f30d1384c9b0310d6453a4c088f8ad742a0ef1a5ba864e8543808efc90632f79ddbb
6
+ metadata.gz: a77a2cf678894a71dc0c5f0fa985be61d5f4d506d7fec15afec417a1409cf1fc1de4b31dce4e96ab161f84ef1d34a69b12e642af2fbbd907eca542af72ec5930
7
+ data.tar.gz: bd098828cb0a4900c887f9fbe5c6f79c4939501f87b3ce1ee35e3ec3af12ef57c32c136bb4a760749f7f05cc8678c2082f1bab0cdc2c14ce43304e5d2bf4239a
data/Rakefile CHANGED
@@ -10,23 +10,8 @@ RDoc::Task.new(:rdoc) do |rdoc|
10
10
  rdoc.rdoc_dir = 'rdoc'
11
11
  rdoc.title = 'SeemsRateable'
12
12
  rdoc.options << '--line-numbers'
13
- rdoc.rdoc_files.include('README.rdoc')
13
+ rdoc.rdoc_files.include('README.md')
14
14
  rdoc.rdoc_files.include('lib/**/*.rb')
15
15
  end
16
16
 
17
- APP_RAKEFILE = File.expand_path("../spec/dummy/Rakefile", __FILE__)
18
- load 'rails/tasks/engine.rake'
19
17
  Bundler::GemHelper.install_tasks
20
-
21
- APP_RAKEFILE = File.expand_path("../spec/dummy/Rakefile", __FILE__)
22
- load 'rails/tasks/engine.rake'
23
-
24
- Dir[File.join(File.dirname(__FILE__), 'tasks/**/*.rake')].each {|f| load f }
25
- require 'rspec/core'
26
- require 'rspec/core/rake_task'
27
-
28
- task :default => :spec
29
-
30
-
31
-
32
-
@@ -3,7 +3,7 @@ require 'active_support/concern'
3
3
  module SeemsRateable
4
4
  module Model
5
5
  extend ActiveSupport::Concern
6
-
6
+
7
7
  def rate(stars, user_id, dimension=nil)
8
8
  if !has_rated?(user_id, dimension)
9
9
  self.rates.create do |r|
@@ -16,26 +16,25 @@ module SeemsRateable
16
16
  update_users_rating(stars, user_id, dimension)
17
17
  else
18
18
  raise Errors::AlreadyRatedError
19
- end
19
+ end
20
20
  end
21
-
21
+
22
22
  def update_overall_average_rating(stars, dimension=nil)
23
- if average(dimension).nil?
24
- CachedRating.create do |r|
23
+ r = average(dimension)
24
+ if r.nil?
25
+ self.rate_averages.create do |r|
25
26
  r.avg = stars
26
27
  r.dimension = dimension
27
- r.cacheable_id = self.id
28
- r.cacheable_type = self.class.name
29
28
  r.cnt = 1
30
- end
29
+ end
31
30
  else
32
- r = average(dimension)
33
- r.avg = (r.avg * r.cnt + stars) / (r.cnt+1)
34
- r.cnt += 1
35
- r.save!
31
+ r.avg = (r.avg * r.cnt + stars) / (r.cnt+1)
32
+ r.cnt += 1
33
+ r.save!
34
+ r
36
35
  end
37
36
  end
38
-
37
+
39
38
  def update_users_rating(stars, user_id, dimension=nil)
40
39
  obj = rates(dimension).where(:rater_id => user_id).first
41
40
  current_record = average(dimension)
@@ -44,69 +43,49 @@ module SeemsRateable
44
43
  obj.stars = stars
45
44
  obj.save!
46
45
  end
47
-
48
-
46
+
47
+
49
48
  def average(dimension=nil)
50
- if dimension.nil?
51
- self.send "rate_average_without_dimension"
52
- else
53
- self.send "#{dimension}_average"
54
- end
49
+ rate_averages.where(dimension: dimension).first
55
50
  end
56
-
51
+
57
52
  def rates(dimension=nil)
58
- if dimension.nil?
59
- self.send "rates_without_dimension"
60
- else
61
- self.send "#{dimension}_rates"
62
- end
53
+ rates_all.where(dimension: dimension)
63
54
  end
64
-
55
+
65
56
  def raters(dimension=nil)
66
- if dimension.nil?
67
- self.send "raters_without_dimension"
68
- else
69
- self.send "#{dimension}_raters"
70
- end
57
+ raters_all.where('seems_rateable_rates.dimension = ?', dimension)
71
58
  end
72
-
59
+
73
60
  def has_rated?(user_id, dimension=nil)
74
61
  record = self.rates(dimension).where(:rater_id => user_id)
75
- record.empty? ? false : true
76
- end
77
-
62
+ record.empty? ? false : true
63
+ end
64
+
78
65
  def can_update?
79
66
  self.class.can_update?
80
67
  end
81
68
 
82
69
  module ClassMethods
83
70
  def seems_rateable(opts={})
84
- has_many :rates_without_dimension, -> { where(dimension: nil) }, :as => :rateable, :class_name => SeemsRateable::Rate, :dependent => :destroy
85
- has_many :raters_without_dimension, :through => :rates_without_dimension, :source => :rater
86
- has_one :rate_average_without_dimension, -> { where(dimension: nil) }, :as => :cacheable, :class_name => SeemsRateable::CachedRating, :dependent => :destroy
87
-
88
- @permission = opts[:allow_update] ? true : false
89
-
90
- def self.can_update?
91
- @permission
71
+ has_many :rates_all, :as => :rateable, :class_name => SeemsRateable::Rate, :dependent => :destroy
72
+ has_many :raters_all, :through => :rates_all, :class_name => SeemsRateable::Engine.config.owner_class, :source => :rater
73
+ has_many :rate_averages, :as => :cacheable, :class_name => SeemsRateable::CachedRating, :dependent => :destroy
74
+
75
+ self.class_variable_set(:@@permission, opts[:allow_update] ? true : false)
76
+
77
+ def self.can_update?
78
+ self.class_variable_get(:@@permission)
92
79
  end
93
-
80
+
94
81
  def self.rateable?
95
82
  true
96
83
  end
97
-
98
- if opts[:dimensions].is_a?(Array)
99
- opts[:dimensions].each do |dimension|
100
- has_many :"#{dimension}_rates", -> { where(dimension: dimension.to_s) }, :dependent => :destroy, :class_name => SeemsRateable::Rate, :as => :rateable
101
- has_many :"#{dimension}_raters", :through => :"#{dimension}_rates", :source => :rater
102
- has_one :"#{dimension}_average", -> { where(dimension: dimension.to_s) }, :as => :cacheable, :class_name => SeemsRateable::CachedRating, :dependent => :destroy
103
- end
104
- end
105
84
  end
106
-
85
+
107
86
  def seems_rateable_rater
108
87
  has_many :ratings_given, :class_name => SeemsRateable::Rate, :foreign_key => :rater_id
109
- end
88
+ end
110
89
  end
111
90
  end
112
91
  end
@@ -1,3 +1,3 @@
1
1
  module SeemsRateable
2
- VERSION = "1.0.12"
2
+ VERSION = "1.0.13"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: seems_rateable
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.12
4
+ version: 1.0.13
5
5
  platform: ruby
6
6
  authors:
7
7
  - Peter Toth
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-12-20 00:00:00.000000000 Z
11
+ date: 2014-01-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -151,3 +151,4 @@ signing_key:
151
151
  specification_version: 4
152
152
  summary: Star Rating Engine
153
153
  test_files: []
154
+ has_rdoc: