From 67a03d44a171a05fc637e1b9ecfc8d3b7769dc85 Mon Sep 17 00:00:00 2001
From: =?utf8?q?Pawe=C5=82=20Paprota?=
Date: Fri, 5 Oct 2012 19:54:58 +0200
Subject: [PATCH] Display a diary entry count on the user page
---
app/models/diary_entry.rb | 4 ++--
app/views/user/view.html.erb | 4 +++-
...20121005195010_add_diary_entry_counter_caches.rb | 13 +++++++++++++
db/structure.sql | 5 ++++-
4 files changed, 22 insertions(+), 4 deletions(-)
create mode 100644 db/migrate/20121005195010_add_diary_entry_counter_caches.rb
diff --git a/app/models/diary_entry.rb b/app/models/diary_entry.rb
index 64a412d28..99a56b2ce 100644
--- a/app/models/diary_entry.rb
+++ b/app/models/diary_entry.rb
@@ -1,7 +1,7 @@
class DiaryEntry < ActiveRecord::Base
- belongs_to :user
+ belongs_to :user, :counter_cache => true
belongs_to :language, :foreign_key => 'language_code'
-
+
has_many :comments, :class_name => "DiaryComment",
:include => :user,
:order => "diary_comments.id"
diff --git a/app/views/user/view.html.erb b/app/views/user/view.html.erb
index e209f853a..114f9b90a 100644
--- a/app/views/user/view.html.erb
+++ b/app/views/user/view.html.erb
@@ -12,6 +12,7 @@
<%= number_with_delimiter(@user.traces.size) %>
|
<%= link_to t('user.view.my diary'), :controller => 'diary_entry', :action => 'list', :display_name => @user.display_name %>
+ <%= number_with_delimiter(@user.diary_entries.size) %>
|
<%= link_to t('user.view.my comments' ), :controller => 'diary_entry', :action => 'comments', :display_name => @user.display_name %>
|
@@ -37,6 +38,7 @@
<%= link_to t('user.view.send message'), :controller => 'message', :action => 'new', :display_name => @this_user.display_name %>
|
<%= link_to t('user.view.diary'), :controller => 'diary_entry', :action => 'list', :display_name => @this_user.display_name %>
+ <%= number_with_delimiter(@this_user.diary_entries.size) %>
|
<%= link_to t('user.view.comments'), :controller => 'diary_entry', :action => 'comments', :display_name => @this_user.display_name %>
|
@@ -95,7 +97,7 @@
<% if @user and @user.administrator? -%>
- <%= t 'user.view.email address' %> <%= @this_user.email %>
+ <%= t 'user.view.email address' %> <%= @this_user.email %>
<% unless @this_user.creation_ip.nil? -%>
<%= t 'user.view.created from' %> <%= @this_user.creation_ip %>
<% end -%>
diff --git a/db/migrate/20121005195010_add_diary_entry_counter_caches.rb b/db/migrate/20121005195010_add_diary_entry_counter_caches.rb
new file mode 100644
index 000000000..9c2c72710
--- /dev/null
+++ b/db/migrate/20121005195010_add_diary_entry_counter_caches.rb
@@ -0,0 +1,13 @@
+class AddDiaryEntryCounterCaches < ActiveRecord::Migration
+ def self.up
+ add_column :users, :diary_entries_count, :integer, :null => false, :default => 0
+
+ DiaryEntry.group(:user_id).pluck(:user_id).each do |user_id|
+ User.reset_counters(user_id, :diary_entries)
+ end
+ end
+
+ def self.down
+ remove_column :users, :diary_entries_count
+ end
+end
diff --git a/db/structure.sql b/db/structure.sql
index 5f71a9fb4..c029e94e0 100644
--- a/db/structure.sql
+++ b/db/structure.sql
@@ -1006,7 +1006,8 @@ CREATE TABLE users (
description_format format_enum DEFAULT 'html'::format_enum NOT NULL,
image_fingerprint character varying(255),
changesets_count integer DEFAULT 0 NOT NULL,
- traces_count integer DEFAULT 0 NOT NULL
+ traces_count integer DEFAULT 0 NOT NULL,
+ diary_entries_count integer DEFAULT 0 NOT NULL
);
@@ -2267,6 +2268,8 @@ INSERT INTO schema_migrations (version) VALUES ('20120404205604');
INSERT INTO schema_migrations (version) VALUES ('20120808231205');
+INSERT INTO schema_migrations (version) VALUES ('20121005195010');
+
INSERT INTO schema_migrations (version) VALUES ('21');
INSERT INTO schema_migrations (version) VALUES ('22');
--
2.39.5