Merge branch 'optional-associations' of https://github.com/socialcast/cancan into socialcast-optional-associations

This commit is contained in:
Ryan Bates 2011-04-01 15:13:02 -07:00
commit b1424dfa49
2 changed files with 8 additions and 1 deletions

View File

@ -109,7 +109,7 @@ module CanCan
if attribute.kind_of? Array if attribute.kind_of? Array
attribute.any? { |element| matches_conditions_hash? element, value } attribute.any? { |element| matches_conditions_hash? element, value }
else else
matches_conditions_hash? attribute, value !attribute.nil? && matches_conditions_hash?(attribute, value)
end end
elsif value.kind_of?(Array) || value.kind_of?(Range) elsif value.kind_of?(Array) || value.kind_of?(Range)
value.include? attribute value.include? attribute

View File

@ -249,6 +249,13 @@ describe CanCan::Ability do
@ability.can?(:read, 1..5).should be_true @ability.can?(:read, 1..5).should be_true
@ability.can?(:read, 4..6).should be_false @ability.can?(:read, 4..6).should be_false
end 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 }
@ability.can?(:read, [object_with_foo]).should be_true
@ability.can?(:read, []).should be_false
end
it "should not stop at cannot definition when comparing class" do it "should not stop at cannot definition when comparing class" do
@ability.can :read, Range @ability.can :read, Range