aboutsummaryrefslogtreecommitdiffstats
path: root/activesupport/lib/active_support/callbacks.rb
diff options
context:
space:
mode:
Diffstat (limited to 'activesupport/lib/active_support/callbacks.rb')
-rw-r--r--activesupport/lib/active_support/callbacks.rb23
1 files changed, 7 insertions, 16 deletions
diff --git a/activesupport/lib/active_support/callbacks.rb b/activesupport/lib/active_support/callbacks.rb
index faa24d09de..db86a532ff 100644
--- a/activesupport/lib/active_support/callbacks.rb
+++ b/activesupport/lib/active_support/callbacks.rb
@@ -94,20 +94,8 @@ module ActiveSupport
end
class Callback #:nodoc:#
- class Unduplicable < Callback # :nodoc:
- def duplicates?(other)
- false
- end
- end
-
def self.build(chain, filter, kind, options, _klass)
- klass = case filter
- when Symbol, String
- Callback
- else
- Callback::Unduplicable
- end
- klass.new chain, filter, kind, options, _klass
+ new chain, filter, kind, options, _klass
end
attr_accessor :chain, :kind, :options, :klass, :raw_filter
@@ -155,9 +143,12 @@ module ActiveSupport
end
def duplicates?(other)
- return false unless self.class == other.class
-
- matches?(other.kind, other.filter)
+ case @raw_filter
+ when Symbol, String
+ matches?(other.kind, other.filter)
+ else
+ false
+ end
end
def _update_filter(filter_options, new_options)