- def self.match(address, domain = nil)
- if domain
- Acl.where("address >>= ? OR domain = ?", address, domain)
- else
- Acl.where("address >>= ?", address)
+ def self.match(address, options = {})
+ acls = Acl.where("address >>= ?", address)
+
+ if options[:domain]
+ labels = options[:domain].split(".")
+
+ until labels.empty?
+ acls = acls.or(Acl.where(:domain => labels.join(".")))
+ labels.shift
+ end