load parent resources for collection actions such 'index'
This commit is contained in:
		
							parent
							
								
									2a3dd85a18
								
							
						
					
					
						commit
						1ade44221a
					
				@ -1,3 +1,5 @@
 | 
				
			|||||||
 | 
					* Load nested parent resources on collection actions such as "index" (thanks dohzya)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
* Adding :name option to load_and_authorize_resource if it does not match controller - see issue #65
 | 
					* Adding :name option to load_and_authorize_resource if it does not match controller - see issue #65
 | 
				
			||||||
 | 
					
 | 
				
			||||||
* Fixing issue when using accessible_by with nil can conditions (thanks jrallison) - see issue #66
 | 
					* Fixing issue when using accessible_by with nil can conditions (thanks jrallison) - see issue #66
 | 
				
			||||||
 | 
				
			|||||||
@ -20,7 +20,9 @@ module CanCan
 | 
				
			|||||||
    end
 | 
					    end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def load_resource
 | 
					    def load_resource
 | 
				
			||||||
      unless collection_actions.include? @params[:action].to_sym
 | 
					      if collection_actions.include? @params[:action].to_sym
 | 
				
			||||||
 | 
					        parent_resource
 | 
				
			||||||
 | 
					      else
 | 
				
			||||||
        if new_actions.include? @params[:action].to_sym
 | 
					        if new_actions.include? @params[:action].to_sym
 | 
				
			||||||
          resource.build(@params[model_name.to_sym])
 | 
					          resource.build(@params[model_name.to_sym])
 | 
				
			||||||
        elsif @params[:id]
 | 
					        elsif @params[:id]
 | 
				
			||||||
 | 
				
			|||||||
@ -86,12 +86,23 @@ describe CanCan::ResourceAuthorization do
 | 
				
			|||||||
  end
 | 
					  end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  it "should load nested resource and fetch other resource through the association" do
 | 
					  it "should load nested resource and fetch other resource through the association" do
 | 
				
			||||||
    stub(Person).find(456).stub!.abilities.stub!.find(123) { :some_ability }
 | 
					    person = Object.new
 | 
				
			||||||
 | 
					    stub(Person).find(456) { person }
 | 
				
			||||||
 | 
					    stub(person).abilities.stub!.find(123) { :some_ability }
 | 
				
			||||||
    authorization = CanCan::ResourceAuthorization.new(@controller, {:controller => "abilities", :action => "show", :id => 123, :person_id => 456}, {:nested => :person})
 | 
					    authorization = CanCan::ResourceAuthorization.new(@controller, {:controller => "abilities", :action => "show", :id => 123, :person_id => 456}, {:nested => :person})
 | 
				
			||||||
    authorization.load_resource
 | 
					    authorization.load_resource
 | 
				
			||||||
 | 
					    @controller.instance_variable_get(:@person).should == person
 | 
				
			||||||
    @controller.instance_variable_get(:@ability).should == :some_ability
 | 
					    @controller.instance_variable_get(:@ability).should == :some_ability
 | 
				
			||||||
  end
 | 
					  end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  it "should load nested resource for collection action" do
 | 
				
			||||||
 | 
					    person = Object.new
 | 
				
			||||||
 | 
					    stub(Person).find(456) { person }
 | 
				
			||||||
 | 
					    authorization = CanCan::ResourceAuthorization.new(@controller, {:controller => "abilities", :action => "index", :person_id => 456}, {:nested => :person})
 | 
				
			||||||
 | 
					    authorization.load_resource
 | 
				
			||||||
 | 
					    @controller.instance_variable_get(:@person).should == person
 | 
				
			||||||
 | 
					  end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  it "should load nested resource and build resource through a deep association" do
 | 
					  it "should load nested resource and build resource through a deep association" do
 | 
				
			||||||
    stub(Person).find(456).stub!.behaviors.stub!.find(789).stub!.abilities.stub!.build(nil) { :some_ability }
 | 
					    stub(Person).find(456).stub!.behaviors.stub!.find(789).stub!.abilities.stub!.build(nil) { :some_ability }
 | 
				
			||||||
    authorization = CanCan::ResourceAuthorization.new(@controller, {:controller => "abilities", :action => "new", :person_id => 456, :behavior_id => 789}, {:nested => [:person, :behavior]})
 | 
					    authorization = CanCan::ResourceAuthorization.new(@controller, {:controller => "abilities", :action => "new", :person_id => 456, :behavior_id => 789}, {:nested => [:person, :behavior]})
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user