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 c401d88628..e17a9d8de7 100644 --- a/app/controllers/notes_controller.rb +++ b/app/controllers/notes_controller.rb @@ -234,7 +234,7 @@ def delete @node = Node.find(params[:id]) if current_user && (current_user.uid == @node.uid || current_user.role == "moderator" || current_user.role == "admin") if @node.authors.uniq.length == 1 - @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 cbdb0dd098..ebe8b1120e 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 + return answer.node unless answer.nil? 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 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