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 |                 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 | ||||||
|  | |||||||
| @ -250,6 +250,13 @@ describe CanCan::Ability do | |||||||
|     @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 | ||||||
|     @ability.cannot :read, Range, :begin => 1 |     @ability.cannot :read, Range, :begin => 1 | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Mitch Williams
						Mitch Williams