burlesque 0.0.2 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -37,9 +37,9 @@ class Ability
37
37
  def initialize(user)
38
38
  if user
39
39
  user.roles.each do |role|
40
- action = role.name.split('_', 2).first
41
- model = role.name.split('_', 2).last.pluralize.classify.constantize
42
- can action.to_sym, model
40
+ action = role.action_sym
41
+ model = role.resource_class
42
+ can action, model
43
43
  end
44
44
  end
45
45
  end
@@ -29,4 +29,4 @@
29
29
  create: Crear
30
30
  update: Actualizar
31
31
  destroy: Eliminar
32
- manage: Administrar
32
+ manage: Administrar
@@ -52,13 +52,15 @@ module Burlesque
52
52
  # Public: Permite setear los grupos que se indican.
53
53
  # Eliminando los grupos que no esten en la lista.
54
54
  #
55
- # ids - id's de los Roles que se desean asignar destructivamente.
55
+ # ids - id's de los Grupos que se desean asignar destructivamente.
56
56
  #
57
57
  # Returns nothing.
58
58
  def group_ids=(ids)
59
59
  ids.each do |group_id|
60
- group = ::Group.find(group_id)
61
- self.groups << group unless self.groups.include?(group)
60
+ if group_id.presence
61
+ group = ::Group.find(group_id)
62
+ self.groups << group unless self.groups.include?(group)
63
+ end
62
64
  end
63
65
 
64
66
  to_deletes = []
@@ -80,8 +82,10 @@ module Burlesque
80
82
  # Returns nothing.
81
83
  def role_ids=(ids)
82
84
  ids.each do |role_id|
83
- role = ::Role.find(role_id)
84
- self.roles << role unless self.role?(role)
85
+ if role_id.presence
86
+ role = ::Role.find(role_id)
87
+ self.roles << role unless self.role?(role)
88
+ end
85
89
  end
86
90
 
87
91
  to_deletes = []
@@ -44,8 +44,10 @@ module Burlesque
44
44
  # Returns nothing.
45
45
  def role_ids=(ids)
46
46
  ids.each do |ri|
47
- role = ::Role.find(ri)
48
- self.roles << role unless self.roles.include? role
47
+ if ri.presence
48
+ role = ::Role.find(ri)
49
+ self.roles << role unless self.roles.include? role
50
+ end
49
51
  end
50
52
 
51
53
  to_deletes = []
@@ -15,10 +15,10 @@ module Burlesque
15
15
  validates :name, presence: true, uniqueness: true
16
16
 
17
17
 
18
- scope :action, lambda { |action| where('name LIKE ?', "#{action}_%") }
19
- scope :not_action, lambda { |action| where('name NOT LIKE ?', "#{action}_%") }
20
- scope :resource, lambda { |model| where('name LIKE ? or name LIKE ?', "%_#{model.to_s.singularize}", "%_#{model.to_s.pluralize}") }
21
- scope :not_resource, lambda { |model| where('name NOT LIKE ? AND name NOT LIKE ?', "%_#{model.to_s.singularize}", "%_#{model.to_s.pluralize}") }
18
+ scope :action, lambda { |action| where('name LIKE ?', "%##{action}") }
19
+ scope :not_action, lambda { |action| where('name NOT LIKE ?', "%##{action}") }
20
+ scope :resource, lambda { |model| where('name LIKE ?', "#{model.to_s}#%") }
21
+ scope :not_resource, lambda { |model| where('name NOT LIKE ?', "#{model.to_s}#%") }
22
22
  end
23
23
 
24
24
  module InstanceMethods
@@ -43,13 +43,28 @@ module Burlesque
43
43
  translate = I18n.t(name.to_sym, scope: :authorizations)
44
44
  return translate unless translate.include?('translation missing:')
45
45
 
46
+ translate = I18n.t(action_sym, scope: :authorizations) + ' ' + resource_class.model_name.human
47
+ end
46
48
 
47
- action, model = name.split('_', 2)
49
+ # Public: Entrega el recurso asociado al rol.
50
+ #
51
+ # Returns Constant.
52
+ def resource_class
53
+ name.split('#', 2).first.pluralize.classify.constantize
54
+ end
48
55
 
49
- count = (model == model.pluralize) ? 2 : 1
50
- model = model.pluralize
56
+ # Public: Entrega la accion asociada al rol.
57
+ #
58
+ # Returns Symbol.
59
+ def action_sym
60
+ name.split('#', 2).last.to_sym
61
+ end
51
62
 
52
- translate = I18n.t(action.to_sym, scope: :authorizations) + ' ' + model.classify.constantize.model_name.human(count: count)
63
+ # Public: Entrega la accion y modelo asociado al rol.
64
+ #
65
+ # Returns Symbol.
66
+ def get_action_and_model
67
+ [action_sym, resource_class]
53
68
  end
54
69
  end
55
70
 
@@ -66,11 +81,10 @@ module Burlesque
66
81
  end
67
82
 
68
83
  if resource
69
- self.create(name: "read_#{resource.pluralize}") unless self.where(name: "read_#{resource.pluralize}").any?
70
- self.create(name: "show_#{resource}") unless self.where(name: "show_#{resource}").any?
71
- self.create(name: "create_#{resource}") unless self.where(name: "create_#{resource}").any?
72
- self.create(name: "update_#{resource}") unless self.where(name: "update_#{resource}").any?
73
- self.create(name: "destroy_#{resource}") unless self.where(name: "destroy_#{resource}").any?
84
+ self.create(name: "#{resource}#read") unless self.where(name: "#{resource}#read" ).any?
85
+ self.create(name: "#{resource}#create") unless self.where(name: "#{resource}#create" ).any?
86
+ self.create(name: "#{resource}#update") unless self.where(name: "#{resource}#update" ).any?
87
+ self.create(name: "#{resource}#destroy") unless self.where(name: "#{resource}#destroy").any?
74
88
  else
75
89
  raise I18n.t('errors.messages.invalid_param', param: model.class)
76
90
  end
@@ -1,3 +1,3 @@
1
- module Burlesque
2
- VERSION = "0.0.2"
3
- end
1
+ module Burlesque
2
+ VERSION = "1.0.0"
3
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: burlesque
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 1.0.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-08-29 00:00:00.000000000 Z
12
+ date: 2013-07-25 00:00:00.000000000 Z
13
13
  dependencies: []
14
14
  description: Crea estructura de roles y grupos para caulquier modelo, considera ademas
15
15
  las 3 tablas de join que pudiesen darse