Evaluate acts_as_activity_provider's scope lazily (#33664).

Patch by Pavel Rosický.


git-svn-id: http://svn.redmine.org/redmine/trunk@20148 e93f8b46-1217-0410-a6f0-8f06a7374b81
This commit is contained in:
Go MAEDA
2020-10-17 02:02:50 +00:00
parent d9c6249a9c
commit e48ff48820
11 changed files with 27 additions and 12 deletions

View File

@@ -55,7 +55,14 @@ module Redmine
provider_options = activity_provider_options[event_type]
raise "#{self.name} can not provide #{event_type} events." if provider_options.nil?
scope = (provider_options[:scope] || self)
scope = provider_options[:scope]
if !scope
scope = self
elsif scope.respond_to?(:call)
scope = scope.call
else
ActiveSupport::Deprecation.warn "acts_as_activity_provider with implicit :scope option is deprecated. Please pass a scope on the #{self.name} as a proc."
end
if from && to
scope = scope.where("#{provider_options[:timestamp]} BETWEEN ? AND ?", from, to)