Skip to content
Snippets Groups Projects
Commit b1fb179a authored by Ryan Bates's avatar Ryan Bates
Browse files

don't pass action into can block with :manage option - closes #129

parent 6105edc6
No related branches found
No related tags found
No related merge requests found
......@@ -26,7 +26,7 @@ module CanCan
# Matches the block or conditions hash
def matches_conditions?(action, subject, extra_args)
if @block && subject.class != Class
call_block(action, subject, extra_args)
@block.call(subject, *extra_args)
elsif @conditions.kind_of?(Hash) && subject.class != Class
matches_conditions_hash?(subject)
else
......@@ -91,13 +91,5 @@ module CanCan
end
end
end
def call_block(action, subject, extra_args)
block_args = []
block_args << action if @expanded_actions.include?(:manage)
block_args << (subject.class == Class ? nil : subject)
block_args += extra_args
@block.call(*block_args)
end
end
end
......@@ -56,9 +56,8 @@ describe CanCan::Ability do
@block_called.should be_false
end
it "should pass action and object for global manage actions" do
@ability.can :manage, Array do |action, object|
action.should == :stuff
it "should pass only object for global manage actions" do
@ability.can :manage, Array do |object|
object.should == [1, 2]
@block_called = true
end
......@@ -80,9 +79,8 @@ describe CanCan::Ability do
@ability.can?(:increment, 123).should be_true
end
it "should return block result for action, object_class, and object for any action" do
@ability.can :manage, :all do |action, object|
action.should == :foo
it "should return block result and only pass object for any action" do
@ability.can :manage, :all do |object|
object.should == 123
@block_called = true
end
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment