seems_rateable 1.0.12 → 1.0.13

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