Rolify Hier

The very simple role hierarchy library for rolify

Requirements

Installation

Add this to your Gemfile.

gem 'rolify_hier'

Getting Started

1. Configure role hierarchy

rails g rolify_hier:initializer

generates config/initializers/rolify_hier.rb:

RolifyHier.config do
    # role(:root) << role(:admin) << role(:user)
    ## or
    # role(:root) << role(:admin)
    # role(:admin) << role(:user)
    ## ->
    ## root has root, admin, user
    ## admin has admin, user
    ## user has user
end

If you want to configure 'king > bishop > knight > pawn' hierarchy, then write like below.

RolifyHier.config do
    role(:king) << role(:bishop) << role(:knight) << role(:pawn)

    ## Also works equally
    # role(:king) << role(:bishop)
    # role(:bishop) << role(:knight) << role(:pawn)
end

2. Example

I assume that you already know rolify.

RolifyHier.config do
    role(:king) << role(:bishop) << role(:knight) << role(:pawn)
end

class User < ActiveRecord::Base
  include RolifyHier
  rolify # for rolify
end

user = User.new
user.add_role :knight
user.hier_role? :pawn # true
user.hier_roles.has_role? :pawn # true. `hier_role?` equals `hier_roles.has_role?`
user.hier_role? :knight # true
user.hier_role? :bishop # false
user.hier_role? :king # false

# Multiple roles work
user2 = User.new
user2.add_role :pawn
user2.add_role :bishop
user2.hier_role? :pawn # true
user2.hier_role? :knight # true (because of bishop role)
user2.hier_role? :bishop # true
user2.hier_role? :king # false

Author

Sputnik Gugja ([email protected])

License

This is free software released into the public domain (CC0 license).

See the LICENSE file.