Module: Burlesque::Admin::InstanceMethods

Defined in:
app/models/burlesque/admin.rb

Instance Method Summary collapse

Instance Method Details

#group?(group) ⇒ Boolean

Public: Indica si tiene un grupo en particular.

group - el grupo que se quiere consultar, puede ser un Group o Group.name

Returns Boolean.

Returns:

  • (Boolean)


35
36
37
38
# File 'app/models/burlesque/admin.rb', line 35

def group? group
  group_name = group.respond_to?(:name) ? group.name : group
  self.groups.map(&:name).include?(group_name.to_s)
end

#group_ids=(ids) ⇒ Object

Public: Permite setear los grupos que se indican. Eliminando los grupos que no esten en la lista.

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

Returns nothing.



59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
# File 'app/models/burlesque/admin.rb', line 59

def group_ids=(ids)
  ids.each do |group_id|
    if group_id.presence
      group = ::Burlesque::Group.find(group_id)
      self.groups << group unless self.groups.include?(group)
    end
  end

  to_deletes = []
  self.groups.each do |group|
    to_deletes << group unless ids.include?(group.id) or ids.include?(group.id.to_s)
  end

  to_deletes.each do |group|
    self.groups.delete(group) if self.group?(group)
  end
end

#role?(role) ⇒ Boolean

Public: Indica si tiene un rol en particular.

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

Returns Boolean.

Returns:

  • (Boolean)


25
26
27
28
# File 'app/models/burlesque/admin.rb', line 25

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: Permite setear los roles que se indican. Eliminando los roles que no esten en la lista, salvo en caso de estar presente por asignacion de un grupo.

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

Returns nothing.



84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
# File 'app/models/burlesque/admin.rb', line 84

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

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

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

#role_in_groups?(role) ⇒ Boolean

Public: Indica si un rol en particular esta presente en los grupos que tiene asignados.

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

Returns Boolean.

Returns:

  • (Boolean)


45
46
47
48
49
50
51
# File 'app/models/burlesque/admin.rb', line 45

def role_in_groups? role
  role_name = role.respond_to?(:name) ? role.name : role
  groups.each do |group|
    return true if group.role?(role_name)
  end
  false
end