consider ancestors when matching classes in Ability#can, this way it works with STI - closes #55

This commit is contained in:
Ryan Bates
2010-08-06 10:06:37 -07:00
parent a157b65fbf
commit 961b8c2477
2 changed files with 12 additions and 1 deletions

View File

@@ -68,7 +68,11 @@ module CanCan
end
def matches_subject?(subject)
@subjects.include?(:all) || @subjects.include?(subject) || @subjects.any? { |sub| sub.kind_of?(Class) && subject.kind_of?(sub) }
@subjects.include?(:all) || @subjects.include?(subject) || matches_subject_class?(subject)
end
def matches_subject_class?(subject)
@subjects.any? { |sub| sub.kind_of?(Class) && (subject.kind_of?(sub) || subject.kind_of?(Class) && subject.ancestors.include?(sub)) }
end
def matches_conditions_hash?(subject, conditions = @conditions)