don't pass action into can block with :manage option - closes #129
This commit is contained in:
parent
6105edc6a7
commit
b1fb179aaf
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue
Block a user