Class: Burlesque::Role
- Inherits:
-
ApplicationRecord
- Object
- ActiveRecord::Base
- ApplicationRecord
- Burlesque::Role
- Defined in:
- app/models/burlesque/role.rb
Constant Summary collapse
- SPLITER =
'#'
Class Method Summary collapse
-
.for(model) ⇒ Object
TODO Mejorar el retorno, para saber que paso, ej: si se agregaron los 5 roles o si ya existen.
Instance Method Summary collapse
-
#action_sym ⇒ Object
Public: Entrega la accion asociada al rol.
-
#admins ⇒ Object
Public: Relacion a muchos usuarios.
-
#get_action_and_model ⇒ Object
Public: Entrega la accion y modelo asociado al rol.
-
#resource_class ⇒ Object
Public: Entrega el recurso asociado al rol.
-
#translate_name ⇒ Object
Public: Traduce el nombre de un rol.
Class Method Details
.for(model) ⇒ Object
TODO Mejorar el retorno, para saber que paso, ej: si se agregaron los 5 roles o si ya existen
80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 |
# File 'app/models/burlesque/role.rb', line 80 def self.for model if model.class == String resource = model.classify.constantize.model_name.to_s.underscore elsif model.class == Symbol resource = model.classify.constantize.model_name.to_s.underscore elsif model.class == Class resource = model.model_name.to_s.underscore end if resource self.find_or_create_by(name: "#{resource}#{SPLITER}read") self.find_or_create_by(name: "#{resource}#{SPLITER}create") self.find_or_create_by(name: "#{resource}#{SPLITER}update") self.find_or_create_by(name: "#{resource}#{SPLITER}destroy") else raise I18n.t('errors.messages.invalid_param', param: model.class) end end |
Instance Method Details
#action_sym ⇒ Object
Public: Entrega la accion asociada al rol.
Returns Symbol.
67 68 69 |
# File 'app/models/burlesque/role.rb', line 67 def action_sym name.split('#', 2).last.to_sym end |
#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.
26 27 28 |
# File 'app/models/burlesque/role.rb', line 26 def admins admin_roles.map &:authorizable end |
#get_action_and_model ⇒ Object
Public: Entrega la accion y modelo asociado al rol.
Returns Symbol.
74 75 76 |
# File 'app/models/burlesque/role.rb', line 74 def get_action_and_model [action_sym, resource_class] end |
#resource_class ⇒ Object
Public: Entrega el recurso asociado al rol.
Returns Constant.
55 56 57 58 59 60 61 62 |
# File 'app/models/burlesque/role.rb', line 55 def resource_class model_name = name.split('#', 2).first begin model_name.pluralize.classify.constantize rescue model_name.to_sym end end |
#translate_name ⇒ Object
Public: Traduce el nombre de un rol.
Primero revisa si existe una traducción para el rol bajo el scope de autorizaciones, luego si el no existe una traducción intenta traducir el nombre del rol usando la traduccion de Burleque, que traduce la acción por defecto e intenta usar las traducciones definidas para cada modelo
Returns el nombre del rol ya traducido.
38 39 40 41 42 43 44 45 46 47 48 49 50 |
# File 'app/models/burlesque/role.rb', line 38 def translate_name translate = I18n.t(name.to_sym, scope: :authorizations) return translate unless translate.include?('translation missing:') begin translate = I18n.t(action_sym, scope: :authorizations) + ' ' + resource_class.model_name.human rescue translate = I18n.t(action_sym, scope: :authorizations) + ' ' + resource_class.to_s end return translate unless translate.include?('translation missing:') return name end |