From 5f758aff57dc54df7d92d0fb63e706d58cf1093d Mon Sep 17 00:00:00 2001 From: Douwe Maan Date: Thu, 17 Aug 2017 19:26:45 +0200 Subject: [PATCH] Prefer polymorphism over `is_a?` --- app/controllers/concerns/notes_actions.rb | 4 ++-- app/models/award_emoji.rb | 2 +- app/models/concerns/noteable.rb | 4 ++++ app/models/issue.rb | 4 ++++ app/models/note.rb | 6 +++--- 5 files changed, 14 insertions(+), 6 deletions(-) diff --git a/app/controllers/concerns/notes_actions.rb b/app/controllers/concerns/notes_actions.rb index 29142e70ed8..c568b401a2f 100644 --- a/app/controllers/concerns/notes_actions.rb +++ b/app/controllers/concerns/notes_actions.rb @@ -18,7 +18,7 @@ module NotesActions @notes = prepare_notes_for_rendering(@notes) notes_json[:notes] = - if noteable.is_a?(Issue) + if noteable.discussions_rendered_on_frontend? note_serializer.represent(@notes) else @notes.map { |note| note_json(note) } @@ -87,7 +87,7 @@ module NotesActions if note.persisted? attrs[:valid] = true - if noteable.is_a?(Issue) + if noteable.discussions_rendered_on_frontend? attrs.merge!(note_serializer.represent(note)) else attrs.merge!( diff --git a/app/models/award_emoji.rb b/app/models/award_emoji.rb index 1f07caf3366..b4e8bf836c2 100644 --- a/app/models/award_emoji.rb +++ b/app/models/award_emoji.rb @@ -37,7 +37,7 @@ class AwardEmoji < ActiveRecord::Base end def expire_etag_cache - return unless awardable.is_a?(Note) + return unless awardable.respond_to?(:expire_etag_cache) awardable.expire_etag_cache end diff --git a/app/models/concerns/noteable.rb b/app/models/concerns/noteable.rb index a30deffec7b..1c4ddabcad5 100644 --- a/app/models/concerns/noteable.rb +++ b/app/models/concerns/noteable.rb @@ -24,6 +24,10 @@ module Noteable DiscussionNote::NOTEABLE_TYPES.include?(base_class_name) end + def discussions_rendered_on_frontend? + false + end + def discussion_notes notes end diff --git a/app/models/issue.rb b/app/models/issue.rb index 1c948c8957e..2f7624ae2bb 100644 --- a/app/models/issue.rb +++ b/app/models/issue.rb @@ -269,6 +269,10 @@ class Issue < ActiveRecord::Base end end + def discussions_rendered_on_frontend? + true + end + private # Returns `true` if the given User can read the current Issue. diff --git a/app/models/note.rb b/app/models/note.rb index aa8e03ce302..d807d5ad618 100644 --- a/app/models/note.rb +++ b/app/models/note.rb @@ -300,12 +300,12 @@ class Note < ActiveRecord::Base end def expire_etag_cache - return unless for_issue? + return unless noteable.discussions_rendered_on_frontend? key = Gitlab::Routing.url_helpers.project_noteable_notes_path( - noteable.project, + project, target_type: noteable_type.underscore, - target_id: noteable.id + target_id: noteable_id ) Gitlab::EtagCaching::Store.new.touch(key) end