def obligations (privilege, options = {})
options = {:context => nil}.merge(options)
user, roles, privileges = user_roles_privleges_from_options(privilege, options)
permit!(privilege, :skip_attribute_test => true, :user => user, :context => options[:context])
return [] if roles.is_a?(Array) and not (roles & omnipotent_roles).empty?
attr_validator = AttributeValidator.new(self, user, nil, privilege, options[:context])
matching_auth_rules(roles, privileges, options[:context]).collect do |rule|
rule.obligations(attr_validator)
end.flatten
end