class ApiMaker::Ability

Attributes

loader[R]

Public Class Methods

new(args: nil) click to toggle source
# File lib/api_maker/ability.rb, line 6
def initialize(args: nil)
  @args = args
  @loader = ApiMaker::AbilityLoader.new(ability: self, args: args)
end

Public Instance Methods

active_record?(subject) click to toggle source
# File lib/api_maker/ability.rb, line 34
def active_record?(subject)
  return subject < ActiveRecord::Base if subject.class == Class

  subject.is_a?(ActiveRecord::Base)
end
can?(*args) click to toggle source

Override methods from CanCan::Ability to first load abilities from the given resource

Calls superclass method
# File lib/api_maker/ability.rb, line 12
def can?(*args)
  subject = args.second
  load_abilities(subject)
  super
end
load_abilities(subject) click to toggle source
# File lib/api_maker/ability.rb, line 24
def load_abilities(subject)
  return unless active_record?(subject)

  if subject.class == Class
    loader.load_model_class(subject)
  elsif subject.class != Class
    loader.load_model_class(subject.class)
  end
end
model_adapter(*args) click to toggle source
Calls superclass method
# File lib/api_maker/ability.rb, line 18
def model_adapter(*args)
  subject = args.first
  load_abilities(subject)
  super
end