diff --git a/lib/cancan/model_adapters/active_record_adapter.rb b/lib/cancan/model_adapters/active_record_adapter.rb index 33766c0a..d0a406be 100644 --- a/lib/cancan/model_adapters/active_record_adapter.rb +++ b/lib/cancan/model_adapters/active_record_adapter.rb @@ -198,11 +198,11 @@ def merge_non_empty_conditions(behavior, conditions_hash, sql) conditions = sanitize_sql(conditions_hash) case sql when true_sql - behavior ? true_sql : "not (#{conditions})" + behavior ? true_sql : "(not (#{conditions}) OR (#{conditions}) IS NULL)" when false_sql behavior ? conditions : false_sql else - behavior ? "(#{conditions}) OR (#{sql})" : "not (#{conditions}) AND (#{sql})" + behavior ? "(#{conditions}) OR (#{sql})" : "(not (#{conditions}) OR (#{conditions}) IS NULL) AND (#{sql})" end end