diff options
Diffstat (limited to 'app/models/journal.rb')
-rw-r--r-- | app/models/journal.rb | 16 |
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 |