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