flower-pot/veterator

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.admin?
      can :manage, :all
    else
      can :index, Sensor
      can :new, Sensor
      can :create, Sensor

      can :show, Sensor do |s|
        s && s.users.include?(user)
      end

      read_write = ->(s) { 
        access = s.sensor_accesses.where(user: user).first
        s && access && access.read_write?
      }
      can :edit, Sensor, &read_write
      can :update, Sensor, &read_write
      can :destroy, Sensor, &read_write
    end
  end
end