делал это раньше с валидатором на пользовательской модели;например,
validates :email, :my_access_control => true
, а затем создать что-то вроде этого
class MyAccessControlValidator < ActiveModel::EachValidator
def validate_each(object, attribute, value)
if ... not in permissions table..
... add to objects error collection why they cannot register
end
end
end