diff --git a/lib/cancan/config.rb b/lib/cancan/config.rb index 0fd8893f..4aff6aef 100644 --- a/lib/cancan/config.rb +++ b/lib/cancan/config.rb @@ -88,12 +88,14 @@ def self.with_accessible_by_strategy(value) end end - def self.validate_accessible_by_strategy!(value) - return if valid_accessible_by_strategies.include?(value) - - raise ArgumentError, "accessible_by_strategy must be one of #{valid_accessible_by_strategies.join(', ')}" +def self.validate_accessible_by_strategy!(value) + unless value < CanCan::ModelAdapters::Strategies::Base + raise ArgumentError, "Invalid strategy: #{value}. It should extend CanCan::ModelAdapters::Strategies::Base." end + return if valid_accessible_by_strategies.include?(value) +end + def self.does_not_support_subquery_strategy? !defined?(CanCan::ModelAdapters::ActiveRecordAdapter) || CanCan::ModelAdapters::ActiveRecordAdapter.version_lower?('5.0.0')