adding :through_association option to load_resource (thanks hunterae) - closes #171
This commit is contained in:
		
							parent
							
								
									ebf77ed647
								
							
						
					
					
						commit
						92995d791e
					
				@ -71,6 +71,10 @@ module CanCan
 | 
				
			|||||||
      # [:+through+]
 | 
					      # [:+through+]
 | 
				
			||||||
      #   Load this resource through another one. This should match the name of the parent instance variable or method.
 | 
					      #   Load this resource through another one. This should match the name of the parent instance variable or method.
 | 
				
			||||||
      #
 | 
					      #
 | 
				
			||||||
 | 
					      # [:+through_association+]
 | 
				
			||||||
 | 
					      #   The name of the association to fetch the child records through the parent resource. This is normally not needed
 | 
				
			||||||
 | 
					      #   because it defaults to the pluralized resource name.
 | 
				
			||||||
 | 
					      #
 | 
				
			||||||
      # [:+shallow+]
 | 
					      # [:+shallow+]
 | 
				
			||||||
      #   Pass +true+ to allow this resource to be loaded directly when parent is +nil+. Defaults to +false+.
 | 
					      #   Pass +true+ to allow this resource to be loaded directly when parent is +nil+. Defaults to +false+.
 | 
				
			||||||
      #
 | 
					      #
 | 
				
			||||||
 | 
				
			|||||||
@ -136,7 +136,7 @@ module CanCan
 | 
				
			|||||||
    def resource_base
 | 
					    def resource_base
 | 
				
			||||||
      if @options[:through]
 | 
					      if @options[:through]
 | 
				
			||||||
        if parent_resource
 | 
					        if parent_resource
 | 
				
			||||||
          @options[:singleton] ? parent_resource : parent_resource.send(name.to_s.pluralize)
 | 
					          @options[:singleton] ? parent_resource : parent_resource.send(@options[:through_association] || name.to_s.pluralize)
 | 
				
			||||||
        elsif @options[:shallow]
 | 
					        elsif @options[:shallow]
 | 
				
			||||||
          resource_class
 | 
					          resource_class
 | 
				
			||||||
        else
 | 
					        else
 | 
				
			||||||
 | 
				
			|||||||
@ -174,6 +174,16 @@ describe CanCan::ControllerResource do
 | 
				
			|||||||
    @controller.instance_variable_get(:@project).should == :some_project
 | 
					    @controller.instance_variable_get(:@project).should == :some_project
 | 
				
			||||||
  end
 | 
					  end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  it "should load resource through the custom association name" do
 | 
				
			||||||
 | 
					    @params.merge!(:action => "show", :id => 123)
 | 
				
			||||||
 | 
					    category = Object.new
 | 
				
			||||||
 | 
					    @controller.instance_variable_set(:@category, category)
 | 
				
			||||||
 | 
					    stub(category).custom_projects.stub!.find(123) { :some_project }
 | 
				
			||||||
 | 
					    resource = CanCan::ControllerResource.new(@controller, :through => :category, :through_association => :custom_projects)
 | 
				
			||||||
 | 
					    resource.load_resource
 | 
				
			||||||
 | 
					    @controller.instance_variable_get(:@project).should == :some_project
 | 
				
			||||||
 | 
					  end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  it "should load resource through the association of another parent resource using method" do
 | 
					  it "should load resource through the association of another parent resource using method" do
 | 
				
			||||||
    @params.merge!(:action => "show", :id => 123)
 | 
					    @params.merge!(:action => "show", :id => 123)
 | 
				
			||||||
    category = Object.new
 | 
					    category = Object.new
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user