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.43.2