diff --git a/lib/cancan/controller_resource.rb b/lib/cancan/controller_resource.rb index 7f29d61..776dd91 100644 --- a/lib/cancan/controller_resource.rb +++ b/lib/cancan/controller_resource.rb @@ -6,8 +6,8 @@ module CanCan options = args.extract_options! resource_name = args.first before_filter_method = options.delete(:prepend) ? :prepend_before_filter : :before_filter - controller_class.send(before_filter_method, options.slice(:only, :except)) do |controller| - controller.class.cancan_resource_class.new(controller, resource_name, options.except(:only, :except)).send(method) + controller_class.send(before_filter_method, options.slice(:only, :except, :if, :unless)) do |controller| + controller.class.cancan_resource_class.new(controller, resource_name, options.except(:only, :except, :if, :unless)).send(method) end end diff --git a/spec/cancan/controller_additions_spec.rb b/spec/cancan/controller_additions_spec.rb index 2fec074..cb8af3f 100644 --- a/spec/cancan/controller_additions_spec.rb +++ b/spec/cancan/controller_additions_spec.rb @@ -49,14 +49,14 @@ describe CanCan::ControllerAdditions do it "authorize_resource should setup a before filter which passes call to ControllerResource" do stub(CanCan::ControllerResource).new(@controller, nil, :foo => :bar).mock!.authorize_resource - mock(@controller_class).before_filter(:except => :show) { |options, block| block.call(@controller) } - @controller_class.authorize_resource :foo => :bar, :except => :show + mock(@controller_class).before_filter(:except => :show, :if => true) { |options, block| block.call(@controller) } + @controller_class.authorize_resource :foo => :bar, :except => :show, :if => true end it "load_resource should setup a before filter which passes call to ControllerResource" do stub(CanCan::ControllerResource).new(@controller, nil, :foo => :bar).mock!.load_resource - mock(@controller_class).before_filter(:only => [:show, :index]) { |options, block| block.call(@controller) } - @controller_class.load_resource :foo => :bar, :only => [:show, :index] + mock(@controller_class).before_filter(:only => [:show, :index], :unless => false) { |options, block| block.call(@controller) } + @controller_class.load_resource :foo => :bar, :only => [:show, :index], :unless => false end it "skip_authorization_check should set up a before filter which sets @_authorized to true" do