Class: Burlesque::Group

Inherits:
ApplicationRecord show all
Defined in:
app/models/burlesque/group.rb

Instance Method Summary collapse

Instance Method Details

#adminsObject

Public: Relacion a muchos usuarios

Se usa esta funcion dado que la tabla de administrador es polimorfica.

Returns los administradores que tienen el rol en cuestion.



18
19
20
# File 'app/models/burlesque/group.rb', line 18

def admins
  admin_groups.map &:adminable
end

#push_roles(new_roles) ⇒ Object

Public: Permite agregar un grupo de Roles al Grupo No elimina los roles que no esten en la lista, solo agrega los que no estan.

new_roles - el arreglo de roles que se quiere agregar al grupo

Returns nothing.



63
64
65
66
67
# File 'app/models/burlesque/group.rb', line 63

def push_roles new_roles
  new_roles.each do |role|
    self.roles << role unless self.roles.include? role
  end
end

#role?(role) ⇒ Boolean

Public: Indica si el grupo tiene un rol en particular.

role - el rol que se quiere consultar, puede ser un Role o Role.name

Returns Boolean.

Returns:

  • (Boolean)


27
28
29
30
# File 'app/models/burlesque/group.rb', line 27

def role? role
  role_name = role.respond_to?(:name) ? role.name : role
  self.roles.map(&:name).include?(role_name.to_s)
end

#role_ids=(ids) ⇒ Object

Public: Setea los roles que se indican al grupo. Eliminando los roles que no esten en la lista.

ids - id’s de los Roles que se desean asignar destructivamente.

Returns nothing.



38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
# File 'app/models/burlesque/group.rb', line 38

def role_ids=(ids)
  ids.each do |ri|
    if ri.presence
      role = ::Role.find(ri)
      self.roles << role unless self.roles.include? role
    end
  end

  to_deletes = []
  role_groups.each do |rg|
    role = rg.role
    to_deletes << role unless ids.include?(role.id.to_s) or ids.include?(role.id)
  end

  to_deletes.each do |role|
    self.roles.delete(role) if self.roles.include?(role)
  end
end