diff --git a/lib/cancan/model_adapters/data_mapper_adapter.rb b/lib/cancan/model_adapters/data_mapper_adapter.rb index 9060b97..88058db 100644 --- a/lib/cancan/model_adapters/data_mapper_adapter.rb +++ b/lib/cancan/model_adapters/data_mapper_adapter.rb @@ -17,6 +17,7 @@ module CanCan def database_records scope = @model_class.all(:conditions => ["0 = 1"]) cans, cannots = @rules.partition { |r| r.base_behavior } + return scope if cans.empty? # apply unions first, then differences. this mean cannot overrides can cans.each { |r| scope += @model_class.all(:conditions => r.conditions) } cannots.each { |r| scope -= @model_class.all(:conditions => r.conditions) }