Sha256: b4d5c28e7c2679e17191ac6b48198bd625e04210f0021e83862a06a1e54fd6c4

Contents?: true

Size: 1.13 KB

Versions: 4

Compression:

Stored size: 1.13 KB

Contents

#module EnjuQuestion
  class Ability
    include CanCan::Ability
  
    def initialize(user, ip_address = nil)
      case user.try(:role).try(:name)
      when 'Administrator'
        can :manage, Answer
        can :manage, Question
      when 'Librarian'
        can :manage, Answer
        can :manage, Question
      when 'User'
        can [:index, :create], Answer
        can :show, Answer do |answer|
          if answer.user == user
            true
          elsif answer.question.shared
            true
          end
        end
        can [:update, :destroy, :delete], Answer do |answer|
          answer.user == user
        end
        can [:index, :create], Question
        can [:update, :destroy, :delete], Question do |question|
          question.user == user
        end
        can :show, Question do |question|
          question.user == user or question.shared
        end
      else
        can :index, Answer
        can :show, Answer do |answer|
          answer.question.shared
        end
        can :index, Question
        can :show, Question do |question|
          question.shared
        end
      end
    end
  end
#end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
enju_question-0.1.0.pre10 spec/dummy/app/models/ability.rb
enju_question-0.1.0.pre9 spec/dummy/app/models/ability.rb
enju_question-0.1.0.pre8 spec/dummy/app/models/ability.rb
enju_question-0.1.0.pre7 spec/dummy/app/models/ability.rb