I would do it in one class and add a role
column to User and assign a role to each User.
# in user.rb
class User < ActiveRecord::Base
has_secure_password
ROLES = %w[ franchisor restaurant_owner manager waiter ]
validates :role, :inclusion => { :in => ROLES }
ROLES.each do |role_name| # generates for each ROLE a method like this:
def #{role_name}? # def waiter?
role == '#{role_name}' # role == 'waiter'
end # end
end
This allows you to ask something like user.franchisor? || user.manager?
whenever you need different permissions.
This is simple and a good point to start. As long as it does not get more complex I would avoid using complex gems.