aboutsummaryrefslogtreecommitdiffstats
path: root/app/models/info_request.rb
diff options
context:
space:
mode:
authorMark Longair <mhl@pobox.com>2013-11-07 14:22:07 +0000
committerMark Longair <mhl@pobox.com>2013-11-07 14:22:07 +0000
commit7c8dccba9d266c479df2c125b724f8e12811d05f (patch)
treefdf3e8aa0594d6d58355abc72ff5c91377d20e49 /app/models/info_request.rb
parent9b631dcc1e978bea10ebd3f534e8e565bc71b0ac (diff)
parent2244e67e1f4cf459361bc669e2bbe94c44bc79ea (diff)
Merge branch 'public-body-stats-fixes' into rails-3-develop
Diffstat (limited to 'app/models/info_request.rb')
-rw-r--r--app/models/info_request.rb21
1 files changed, 15 insertions, 6 deletions
diff --git a/app/models/info_request.rb b/app/models/info_request.rb
index eba620f53..9463a236e 100644
--- a/app/models/info_request.rb
+++ b/app/models/info_request.rb
@@ -1182,14 +1182,23 @@ public
after_save :update_counter_cache
after_destroy :update_counter_cache
+ # This method updates the count columns of the PublicBody that
+ # store the number of "not held", "to some extent successful" and
+ # "both visible and classified" requests when saving or destroying
+ # an InfoRequest associated with the body:
def update_counter_cache
PublicBody.skip_callback(:save, :after, :purge_in_cache)
- self.public_body.info_requests_not_held_count = InfoRequest.where(
- :public_body_id => self.public_body.id,
- :described_state => 'not_held').count
- self.public_body.info_requests_successful_count = InfoRequest.where(
- :public_body_id => self.public_body.id,
- :described_state => ['successful', 'partially_successful']).count
+ basic_params = {
+ :public_body_id => self.public_body_id,
+ :awaiting_description => false,
+ :prominence => 'normal'
+ }
+ [['info_requests_not_held_count', {:described_state => 'not_held'}],
+ ['info_requests_successful_count', {:described_state => ['successful', 'partially_successful']}],
+ ['info_requests_visible_classified_count', {}]].each do |column, extra_params|
+ params = basic_params.clone.update extra_params
+ self.public_body.send "#{column}=", InfoRequest.where(params).count
+ end
self.public_body.without_revision do
public_body.no_xapian_reindex = true
public_body.save