class Fixably::ActionPolicy

Attributes

resource[R]

Public Class Methods

new(resource:) click to toggle source
# File lib/fixably/action_policy.rb, line 7
def initialize(resource:)
  @resource = resource.instance_of?(Class) ? resource : resource.class
  validate_resource!
end

Public Instance Methods

create!() click to toggle source
# File lib/fixably/action_policy.rb, line 16
def create!
  return true if create?

  raise(
    UnsupportedError,
    "Fixably does not support creating #{resource_name}"
  )
end
create?() click to toggle source
# File lib/fixably/action_policy.rb, line 12
def create?
  resource.actions.include?(:create)
end
delete!() click to toggle source
# File lib/fixably/action_policy.rb, line 29
def delete!
  return true if delete?

  raise(
    UnsupportedError,
    "Fixably does not support deleting #{resource_name}"
  )
end
delete?() click to toggle source
# File lib/fixably/action_policy.rb, line 25
def delete?
  resource.actions.include?(:delete)
end
list!() click to toggle source
# File lib/fixably/action_policy.rb, line 42
def list!
  return true if list?

  raise(
    UnsupportedError,
    "Fixably does not support listing #{resource_name}"
  )
end
list?() click to toggle source
# File lib/fixably/action_policy.rb, line 38
def list?
  resource.actions.include?(:list)
end
show!() click to toggle source
# File lib/fixably/action_policy.rb, line 55
def show!
  return true if show?

  raise(
    UnsupportedError,
    "Fixably does not support retrieving #{resource_name}"
  )
end
show?() click to toggle source
# File lib/fixably/action_policy.rb, line 51
def show?
  resource.actions.include?(:show)
end
update!() click to toggle source
# File lib/fixably/action_policy.rb, line 68
def update!
  return true if update?

  raise(
    UnsupportedError,
    "Fixably does not support updating #{resource_name}"
  )
end
update?() click to toggle source
# File lib/fixably/action_policy.rb, line 64
def update?
  resource.actions.include?(:update)
end

Private Instance Methods

resource_name() click to toggle source
# File lib/fixably/action_policy.rb, line 88
def resource_name
  resource.name.split("::").last.underscore.humanize.pluralize.downcase
end
validate_resource!() click to toggle source
# File lib/fixably/action_policy.rb, line 79
def validate_resource!
  return if resource.ancestors.include?(ApplicationResource)

  raise(
    ArgumentError,
    "The resource should inherit from ApplicationResource"
  )
end