cbeer/job_board

View on GitHub
app/models/ability.rb

Summary

Maintainability
A
0 mins
Test Coverage
class Ability
  include CanCan::Ability

  def initialize(user)
    user ||= User.new

    if user.has_role? :admin
      can :manage, :all
    else
      can :read, Job, published: true
      can :read, Employer do |employer|
        employer.jobs.published.any?
      end

      can %i[edit destroy], Job, user_id: user.id if user.persisted?
      can :create, Job
    end
  end
end