Fixed bug where conditions on an optionally associated object would throw exceptions if the associated object was not present at the rule match time.
This commit is contained in:
parent
7bcfd3d295
commit
6aaab9e440
|
@ -109,7 +109,7 @@ module CanCan
|
|||
if attribute.kind_of? Array
|
||||
attribute.any? { |element| matches_conditions_hash? element, value }
|
||||
else
|
||||
matches_conditions_hash? attribute, value
|
||||
!attribute.nil? && matches_conditions_hash?(attribute, value)
|
||||
end
|
||||
elsif value.kind_of?(Array) || value.kind_of?(Range)
|
||||
value.include? attribute
|
||||
|
|
|
@ -249,6 +249,13 @@ describe CanCan::Ability do
|
|||
@ability.can?(:read, 1..5).should be_true
|
||||
@ability.can?(:read, 4..6).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 }
|
||||
@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
|
||||
@ability.can :read, Range
|
||||
|
|
Loading…
Reference in New Issue
Block a user