Essentail Rails Design Pattern

Write Good Rails Code

CanCan

app/model/ability.rb

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
class Ability
include CanCan::Ability

def initialize(user)
  if user.has_role?(:admin)
    admin_permissions(user)
  elsif user.has_role?(:editor)
    editor_permissions(user)
  elsif user.has_role?(:author)
    author_permissions(user)
  elsif user.has_role?(:marketing)
    marketing_permissions(user)
  elsif user.has_role?(:contributor)
    cannot :manage, :all
  else
    cannot :manage, :all
  end
end

Comments