fix logic error for single cannot condition - it should return no records

This commit is contained in:
Yura Sokolov
2010-05-25 14:09:01 +04:00
parent ac19422a90
commit 5fd793090a
2 changed files with 23 additions and 10 deletions

View File

@@ -234,12 +234,11 @@ module CanCan
true_cond = subject.send(:sanitize_sql, ['?=?', true, true])
false_cond = subject.send(:sanitize_sql, ['?=?', true, false])
conds.reverse.inject(nil) do |sql, action|
conds.reverse.inject(false_cond) do |sql, action|
behavior, condition = action
if condition && condition != {}
condition = subject.send(:sanitize_sql, condition)
case sql
when nil then behavior ? condition : "not (#{condition})"
when true_cond
behavior ? true_cond : "not (#{condition})"
when false_cond