From 11ec4ca92793999fd4431c554dde0e6ed5b8e386 Mon Sep 17 00:00:00 2001 From: ViditChitkara Date: Fri, 2 Feb 2018 20:46:55 +0530 Subject: [PATCH 1/3] comments on profile page fixed fixes #2196 --- app/models/comment.rb | 6 +++--- app/models/node.rb | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/app/models/comment.rb b/app/models/comment.rb index cbdb0dd098..ba3771fba3 100644 --- a/app/models/comment.rb +++ b/app/models/comment.rb @@ -5,8 +5,8 @@ class Comment < ActiveRecord::Base :subject, :hostname, :comment, :status, :format, :thread, :timestamp - belongs_to :node, foreign_key: 'nid', touch: true, - dependent: :destroy, counter_cache: true + belongs_to :node, foreign_key: 'nid', touch: true, counter_cache: true + # dependent: :destroy, counter_cache: true belongs_to :drupal_user, foreign_key: 'uid' belongs_to :answer, foreign_key: 'aid' @@ -67,7 +67,7 @@ def parent if aid == 0 node else - answer.node + answer && answer.node end end diff --git a/app/models/node.rb b/app/models/node.rb index 3a47043d72..969764fd09 100644 --- a/app/models/node.rb +++ b/app/models/node.rb @@ -38,7 +38,7 @@ def updated_month has_many :tag, through: :node_tag # these override the above... have to do it manually: # has_many :tag, :through => :drupal_node_tag - has_many :comments, foreign_key: 'nid' #, dependent: :destroy # re-enable in Rails 5 + has_many :comments, foreign_key: 'nid' , dependent: :destroy # re-enable in Rails 5 has_many :drupal_content_type_map, foreign_key: 'nid' #, dependent: :destroy # re-enable in Rails 5 has_many :drupal_content_field_mappers, foreign_key: 'nid' #, dependent: :destroy # re-enable in Rails 5 has_many :drupal_content_field_map_editor, foreign_key: 'nid' #, dependent: :destroy # re-enable in Rails 5 From 7d7c326eadecc7ee1c525ca3e75cece67f9408be Mon Sep 17 00:00:00 2001 From: ViditChitkara Date: Sun, 4 Feb 2018 19:16:55 +0530 Subject: [PATCH 2/3] minor changes --- app/controllers/answers_controller.rb | 2 +- app/controllers/notes_controller.rb | 2 +- app/models/answer.rb | 2 +- app/models/comment.rb | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/app/controllers/answers_controller.rb b/app/controllers/answers_controller.rb index f1c557c19b..8d6e72064f 100644 --- a/app/controllers/answers_controller.rb +++ b/app/controllers/answers_controller.rb @@ -41,7 +41,7 @@ def delete current_user.role == 'admin' || current_user.role == 'moderator' respond_to do |format| - if @answer.delete + if @answer.destroy format.html { redirect_to @answer.node.path(:question), notice: 'Answer deleted' } format.js else diff --git a/app/controllers/notes_controller.rb b/app/controllers/notes_controller.rb index abd71523f5..a85d4e255f 100644 --- a/app/controllers/notes_controller.rb +++ b/app/controllers/notes_controller.rb @@ -233,7 +233,7 @@ def update def delete @node = Node.find(params[:id]) if current_user.uid == @node.uid && @node.type == 'note' || current_user.role == 'admin' || current_user.role == 'moderator' - @node.delete + @node.destroy respond_with do |format| format.html do if request.xhr? diff --git a/app/models/answer.rb b/app/models/answer.rb index b1240ea6be..e30747db7f 100644 --- a/app/models/answer.rb +++ b/app/models/answer.rb @@ -6,7 +6,7 @@ class Answer < ActiveRecord::Base belongs_to :node, foreign_key: 'nid', dependent: :destroy belongs_to :drupal_user, foreign_key: 'uid' has_many :answer_selections, foreign_key: 'aid' - has_many :comments, foreign_key: 'aid' + has_many :comments, foreign_key: 'aid', dependent: :destroy validates :content, presence: true diff --git a/app/models/comment.rb b/app/models/comment.rb index ba3771fba3..ebe8b1120e 100644 --- a/app/models/comment.rb +++ b/app/models/comment.rb @@ -67,7 +67,7 @@ def parent if aid == 0 node else - answer && answer.node + return answer.node unless answer.nil? end end From b9644fbcd313442eced212ac39d6a504b0372bdc Mon Sep 17 00:00:00 2001 From: ViditChitkara Date: Sun, 4 Feb 2018 19:54:57 +0530 Subject: [PATCH 3/3] written tests --- test/unit/answer_test.rb | 7 +++++++ test/unit/node_test.rb | 7 +++++++ 2 files changed, 14 insertions(+) diff --git a/test/unit/answer_test.rb b/test/unit/answer_test.rb index 222b1be0e4..6738f098c2 100644 --- a/test/unit/answer_test.rb +++ b/test/unit/answer_test.rb @@ -48,4 +48,11 @@ class AnswerTest < ActiveSupport::TestCase answer = answers(:one) assert_equal answer.comments.last, Comment.last end + + test 'should delete associated comments when an answer is deleted' do + answer = answers(:one) + assert_equal answer.comments.count, 2 + deleted_answer = answer.destroy + assert_equal answer.comments.count, 0 + end end diff --git a/test/unit/node_test.rb b/test/unit/node_test.rb index 7900bc914e..e9320c772a 100644 --- a/test/unit/node_test.rb +++ b/test/unit/node_test.rb @@ -336,4 +336,11 @@ class NodeTest < ActiveSupport::TestCase assert_not_nil tagged_note assert_equal jeff_notes, tagged_note end + + test 'should delete associated comments when a node is deleted' do + node = nodes(:one) + assert_equal node.comments.count, 4 + deleted_node = node.destroy + assert_equal node.comments.count, 0 + end end