Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
Merge pull request ryanb#607 from Mixbook/master
Added support for value to be Enumerable
  • Loading branch information
ryanb committed May 10, 2012
2 parents aed37cd + 65bbf0e commit 6e8bc85
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 2 deletions.
2 changes: 1 addition & 1 deletion lib/cancan/rule.rb
Expand Up @@ -111,7 +111,7 @@ def matches_conditions_hash?(subject, conditions = @conditions)
else
!attribute.nil? && matches_conditions_hash?(attribute, value)
end
elsif value.kind_of?(Array) || value.kind_of?(Range)
elsif value.kind_of?(Enumerable)
value.include? attribute
else
attribute == value
Expand Down
10 changes: 9 additions & 1 deletion spec/cancan/ability_spec.rb
Expand Up @@ -249,7 +249,15 @@
@ability.can?(:read, 1..5).should be_true
@ability.can?(:read, 4..6).should be_false
end


it "should accept a set as a condition value" do
mock(object_with_foo_2 = Object.new).foo { 2 }
mock(object_with_foo_3 = Object.new).foo { 3 }
@ability.can :read, Object, :foo => [1, 2, 5].to_set
@ability.can?(:read, object_with_foo_2).should be_true
@ability.can?(:read, object_with_foo_3).should be_false
end

it "should not match subjects return nil for methods that must match nested a nested conditions hash" do
mock(object_with_foo = Object.new).foo { :bar }
@ability.can :read, Array, :first => { :foo => :bar }
Expand Down

0 comments on commit 6e8bc85

Please sign in to comment.