module Abilities def self.ability_for(user) if user.admin? AdminAbility.new(user) else user MemberAbility.new(user) else GuestAbility.new end end class AdminAbility include CanCan::Ability def initialize(user) # ... end end class MemberAbility include CanCan::Ability def initialize(user) # ... end end class GuestAbility include CanCan::Ability def initialize(user) # ... end end # move classes into separate files as needed if they get too long end