better_counters 1.0.0 → 1.0.1

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.
data/README.md CHANGED
@@ -17,9 +17,29 @@ In your Gemfile add this line:
17
17
 
18
18
  ### Usage
19
19
 
20
+ In the following examples, we assume that we have a model `User` that has many `Project`s and many `Task`s through projects, and we'd like to cache the tasks count on the `User` model.
21
+
20
22
  First you need to create a migration and add a counter column, like `tasks_count`.
21
23
 
22
- rails g migration AddTasksCountToUsers tasks_count:integer
24
+ rails g migration AddTasksCountToUsers
25
+
26
+ Open up the generated migration file located at `/db/migrate/XXXXX.rb` and replace the content with something like:
27
+
28
+ def self.up
29
+ add_column :users, :tasks_count, :integer, :default => 0
30
+
31
+ # Fill in the new cache column with each user's tasks count
32
+ User.reset_column_information
33
+ User.find(:all).each do |p|
34
+ User.update_counters p.id, :tasks_count => p.tasks.count
35
+ end
36
+ end
37
+
38
+ def self.down
39
+ remove_column :user, :tasks_count
40
+ end
41
+
42
+ Run `rake db:migrate`
23
43
 
24
44
  Then simply on your model add the method `counter_cache` with a hash of models to keep the count column in.
25
45
 
@@ -7,8 +7,7 @@ module BetterCounters
7
7
  p.each do |c|
8
8
  if c[1]
9
9
  column = (c[1] == true) ? self.class.table_name + "_count" : c[1]
10
- n > 0 ? send(c[0]).increment(column, 1) : send(c[0]).decrement(column, 1)
11
- send(c[0]).save
10
+ n > 0 ? send(c[0]).increment!(column) : send(c[0]).decrement!(column)
12
11
  end
13
12
  end
14
13
  end
@@ -1,3 +1,3 @@
1
1
  module BetterCounters
2
- VERSION = "1.0.0"
2
+ VERSION = "1.0.1"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: better_counters
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.0.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -13,7 +13,7 @@ date: 2012-11-09 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: activerecord
16
- requirement: &25656288 !ruby/object:Gem::Requirement
16
+ requirement: !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,7 +21,12 @@ dependencies:
21
21
  version: '0'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *25656288
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: '0'
25
30
  description: Improved alternative to rails built-in counter cache to work outside
26
31
  belongs_to
27
32
  email:
@@ -64,7 +69,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
64
69
  version: '0'
65
70
  requirements: []
66
71
  rubyforge_project:
67
- rubygems_version: 1.8.16
72
+ rubygems_version: 1.8.24
68
73
  signing_key:
69
74
  specification_version: 3
70
75
  summary: Independent counter cache outside belongs_to