I added:

+    fail('table parameter is required.') if self[:ensure] == :present and self[:table].nil?

Which should stop the table from being blank in the type.  Originally I thought it was optional but I believe you always need a table of some kind to issue a grant against.  Please correct me if I'm off base but I can't find a time when you can say:

GRANT X TO 'blah'@'blah' without having an ON y.