ballot_box 0.1.3 → 0.1.4

Sign up to get free protection for your applications and to get access to all the features.
data/Gemfile.lock ADDED
@@ -0,0 +1,20 @@
1
+ GEM
2
+ remote: http://rubygems.org/
3
+ specs:
4
+ activemodel (3.1.1)
5
+ activesupport (= 3.1.1)
6
+ builder (~> 3.0.0)
7
+ i18n (~> 0.6)
8
+ activesupport (3.1.1)
9
+ multi_json (~> 1.0)
10
+ browser (0.1.3)
11
+ builder (3.0.0)
12
+ i18n (0.6.0)
13
+ multi_json (1.0.3)
14
+
15
+ PLATFORMS
16
+ ruby
17
+
18
+ DEPENDENCIES
19
+ activemodel
20
+ browser (~> 0.1.2)
data/README.rdoc CHANGED
@@ -40,9 +40,13 @@ or update place scope conditions:
40
40
  unscoped.order("rating DESC").where(:is_visible => true)
41
41
  end
42
42
 
43
- Update votes directly:
43
+ Update votes sum directly:
44
44
 
45
45
  Post.ballot_box_update_votes!
46
+
47
+ or update votes sum only for one record:
48
+
49
+ @post.ballot_box_update_votes!
46
50
 
47
51
  Update place directly:
48
52
 
@@ -16,8 +16,9 @@ module BallotBox
16
16
 
17
17
  options = {
18
18
  :strategies => [:authenticated],
19
- :place => false
20
- }.merge(options)
19
+ :place => false,
20
+ :refresh => true
21
+ }.merge(options)
21
22
 
22
23
  class_attribute :ballot_box_options, :instance_writer => false
23
24
  self.ballot_box_options = options
@@ -119,6 +120,17 @@ module BallotBox
119
120
  def ballot_box_valid?(vote)
120
121
  self.class.ballot_box_strategies.map { |st| st.new(self, vote) }.map(&:valid?).all?
121
122
  end
123
+
124
+ def ballot_box_refresh?
125
+ self.class.ballot_box_options[:refresh]
126
+ end
127
+
128
+ def ballot_box_update_votes!
129
+ if persisted? && ballot_box_cached_column
130
+ count = self.votes.select("SUM(value)")
131
+ self.class.update_all("#{ballot_box_cached_column} = (#{count.to_sql})", ["id = ?", id])
132
+ end
133
+ end
122
134
  end
123
135
  end
124
136
  end
@@ -1,4 +1,4 @@
1
1
  # encoding: utf-8
2
2
  module BallotBox
3
- VERSION = "0.1.3".freeze
3
+ VERSION = "0.1.4".freeze
4
4
  end
@@ -22,8 +22,8 @@ module BallotBox
22
22
 
23
23
  # Callbacks
24
24
  before_create :parse_browser
25
- after_save :update_cached_columns
26
- after_destroy :update_cached_columns
25
+ after_save :update_cached_columns, :if => :refresh?
26
+ after_destroy :update_cached_columns, :if => :refresh?
27
27
 
28
28
  attr_accessible :request, :ip_address, :user_agent
29
29
 
@@ -116,6 +116,10 @@ module BallotBox
116
116
 
117
117
  protected
118
118
 
119
+ def refresh?
120
+ voteable && voteable.ballot_box_refresh?
121
+ end
122
+
119
123
  def parse_browser
120
124
  self.browser_name ||= browser.id.to_s
121
125
  self.browser_version ||= browser.version
@@ -128,14 +132,11 @@ module BallotBox
128
132
  end
129
133
 
130
134
  def update_votes_count
131
- if voteable && voteable.ballot_box_cached_column
132
- count = voteable.votes.select("SUM(value)")
133
- voteable.class.update_all("#{voteable.ballot_box_cached_column} = (#{count.to_sql})", ["id = ?", voteable.id])
134
- end
135
+ voteable.ballot_box_update_votes!
135
136
  end
136
137
 
137
138
  def update_place
138
- if voteable && voteable.ballot_box_place_column
139
+ if voteable.ballot_box_place_column
139
140
  voteable.class.ballot_box_update_place!
140
141
  end
141
142
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ballot_box
3
3
  version: !ruby/object:Gem::Version
4
- hash: 29
4
+ hash: 19
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 1
9
- - 3
10
- version: 0.1.3
9
+ - 4
10
+ version: 0.1.4
11
11
  platform: ruby
12
12
  authors:
13
13
  - Igor Galeta
@@ -16,12 +16,10 @@ autorequire:
16
16
  bindir: bin
17
17
  cert_chain: []
18
18
 
19
- date: 2011-10-07 00:00:00 +03:00
20
- default_executable:
19
+ date: 2011-10-10 00:00:00 Z
21
20
  dependencies:
22
21
  - !ruby/object:Gem::Dependency
23
- type: :runtime
24
- requirement: &id001 !ruby/object:Gem::Requirement
22
+ version_requirements: &id001 !ruby/object:Gem::Requirement
25
23
  none: false
26
24
  requirements:
27
25
  - - ~>
@@ -33,11 +31,11 @@ dependencies:
33
31
  - 2
34
32
  version: 0.1.2
35
33
  name: browser
36
- version_requirements: *id001
37
34
  prerelease: false
38
- - !ruby/object:Gem::Dependency
39
35
  type: :runtime
40
- requirement: &id002 !ruby/object:Gem::Requirement
36
+ requirement: *id001
37
+ - !ruby/object:Gem::Dependency
38
+ version_requirements: &id002 !ruby/object:Gem::Requirement
41
39
  none: false
42
40
  requirements:
43
41
  - - ">="
@@ -47,8 +45,9 @@ dependencies:
47
45
  - 0
48
46
  version: "0"
49
47
  name: activemodel
50
- version_requirements: *id002
51
48
  prerelease: false
49
+ type: :runtime
50
+ requirement: *id002
52
51
  description: The BallotBox gem enables visitors to vote for and against voteable objects
53
52
  email: galeta.igor@gmail.com
54
53
  executables: []
@@ -59,6 +58,7 @@ extra_rdoc_files:
59
58
  - LICENSE
60
59
  - README.rdoc
61
60
  files:
61
+ - Gemfile.lock
62
62
  - LICENSE
63
63
  - README.rdoc
64
64
  - Rakefile
@@ -76,7 +76,6 @@ files:
76
76
  - lib/generators/ballot_box/USAGE
77
77
  - lib/generators/ballot_box/install_generator.rb
78
78
  - lib/generators/ballot_box/templates/migrate/create_votes.rb
79
- has_rdoc: true
80
79
  homepage: https://github.com/galetahub/ballot_box
81
80
  licenses: []
82
81
 
@@ -106,7 +105,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
106
105
  requirements: []
107
106
 
108
107
  rubyforge_project:
109
- rubygems_version: 1.6.2
108
+ rubygems_version: 1.8.10
110
109
  signing_key:
111
110
  specification_version: 3
112
111
  summary: The BallotBox gem enables visitors to vote for and against voteable objects