module IAmICan::Role

Public Class Methods

extract(param_roles, i_am_i_can) click to toggle source
# File lib/i_am_i_can/role/definition.rb, line 23
def self.extract(param_roles, i_am_i_can)
  roles = param_roles.group_by(&:class)
  instances = roles[i_am_i_can.role_model] || []
  names = roles.values_at(Symbol, String).flatten.compact.uniq.map(&:to_sym)
  [ instances, names ]
end
modeling(objs, i_am_i_can) click to toggle source
# File lib/i_am_i_can/role/definition.rb, line 18
def self.modeling(objs, i_am_i_can)
  return objs if objs.first.is_a?(i_am_i_can.role_model)
  objs.map { |obj| i_am_i_can.role_model.where(name: obj).first_or_initialize }
end

Public Instance Methods

can?(action, obj) click to toggle source
# File lib/i_am_i_can/role.rb, line 21
def can?(action, obj)
  send("with_#{_reflect_of('permission')}?",
       i_am_i_can.permission_model.matched(action, obj).ids)
end
names() click to toggle source
# File lib/i_am_i_can/role.rb, line 17
def names
  self.pluck(:name).map(&:to_sym)
end
which(name:, **conditions) click to toggle source
# File lib/i_am_i_can/role.rb, line 13
def which(name:, **conditions)
  find_by!(name: name, **conditions)
end