support has_many association or arrays in can conditions hash
This commit is contained in:
parent
e20081454f
commit
06296b0a40
|
@ -1,3 +1,5 @@
|
|||
* Support has_many association or arrays in can conditions hash
|
||||
|
||||
* Adding joins clause to accessible_by when conditions are across associations
|
||||
|
||||
1.1.1 (April 17, 2010)
|
||||
|
|
|
@ -65,7 +65,11 @@ module CanCan
|
|||
conditions.all? do |name, value|
|
||||
attribute = subject.send(name)
|
||||
if value.kind_of?(Hash)
|
||||
matches_conditions? attribute, value
|
||||
if attribute.kind_of? Array
|
||||
attribute.any? { |element| matches_conditions? element, value }
|
||||
else
|
||||
matches_conditions? attribute, value
|
||||
end
|
||||
elsif value.kind_of?(Array) || value.kind_of?(Range)
|
||||
value.include? attribute
|
||||
else
|
||||
|
|
|
@ -168,6 +168,12 @@ describe CanCan::Ability do
|
|||
@ability.can?(:read, ["test1", "foo"]).should be_true
|
||||
end
|
||||
|
||||
it "should allow nested hash of arrays and match any element" do
|
||||
@ability.can :read, Array, :first => { :to_i => 3 }
|
||||
@ability.can?(:read, [[1, 2, 3]]).should be_true
|
||||
@ability.can?(:read, [[4, 5, 6]]).should be_false
|
||||
end
|
||||
|
||||
it "should return conditions for a given ability" do
|
||||
@ability.can :read, Array, :first => 1, :last => 3
|
||||
@ability.conditions(:show, Array).should == {:first => 1, :last => 3}
|
||||
|
|
Loading…
Reference in New Issue
Block a user