Class: Burlesque::Group
- Inherits:
-
ApplicationRecord
- Object
- ActiveRecord::Base
- ApplicationRecord
- Burlesque::Group
- Defined in:
- app/models/burlesque/group.rb
Instance Method Summary collapse
-
#admins ⇒ Object
Public: Relacion a muchos usuarios.
-
#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.
-
#role?(role) ⇒ Boolean
Public: Indica si el grupo tiene un rol en particular.
-
#role_ids=(ids) ⇒ Object
Public: Setea los roles que se indican al grupo.
Instance Method Details
#admins ⇒ Object
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.
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 |