summaryrefslogtreecommitdiffstats
path: root/app/models/journal.rb
diff options
context:
space:
mode:
Diffstat (limited to 'app/models/journal.rb')
-rw-r--r--app/models/journal.rb16
1 files changed, 13 insertions, 3 deletions
diff --git a/app/models/journal.rb b/app/models/journal.rb
index 446eac7a6..12f2beec8 100644
--- a/app/models/journal.rb
+++ b/app/models/journal.rb
@@ -19,6 +19,7 @@
class Journal < ApplicationRecord
include Redmine::SafeAttributes
+ include Redmine::Reaction::Reactable
belongs_to :journalized, :polymorphic => true
# added as a quick fix to allow eager loading of the polymorphic association
@@ -53,7 +54,7 @@ class Journal < ApplicationRecord
:author_key => :user_id,
:scope =>
proc do
- preload({:issue => :project}, :user).
+ preload({:issue => :project}, {:issue => :tracker}, :user).
joins("LEFT OUTER JOIN #{JournalDetail.table_name} ON #{JournalDetail.table_name}.journal_id = #{Journal.table_name}.id").
where("#{Journal.table_name}.journalized_type = 'Issue' AND" +
" (#{JournalDetail.table_name}.prop_key = 'status_id' OR #{Journal.table_name}.notes <> '')").distinct
@@ -104,6 +105,15 @@ class Journal < ApplicationRecord
(details.empty? && notes.blank?) ? false : super()
end
+ def journalized
+ if journalized_type == 'Issue' && association(:issue).loaded?
+ # Avoid extra query by using preloaded association
+ issue
+ else
+ super
+ end
+ end
+
# Returns journal details that are visible to user
def visible_details(user=User.current)
details.select do |detail|
@@ -148,8 +158,8 @@ class Journal < ApplicationRecord
end
end
- def visible?(*args)
- journalized.visible?(*args)
+ def visible?(*)
+ journalized.visible?(*)
end
# Returns a string of css classes