Module: Role
- Included in:
- Policy::Base
- Defined in:
- lib/pundit_roles/policy/role.rb,
lib/pundit_roles/policy/role/option_builder.rb
Overview
Extended by Policy::Base. Defines the methods necessary for declaring roles.
Defined Under Namespace
Classes: OptionBuilder
Instance Attribute Summary collapse
-
#permissions_hash ⇒ Object
Returns the value of attribute permissions_hash.
Instance Method Summary collapse
-
#role(*opts) ⇒ Hash
Builds a new role by saving it into the #permissions_hash class instance variable Valid options are :attributes, :associations, :scope, :uses_db, :extend.
Instance Attribute Details
#permissions_hash ⇒ Object
Returns the value of attribute permissions_hash.
6 7 8 |
# File 'lib/pundit_roles/policy/role.rb', line 6 def @permissions_hash end |
Instance Method Details
#role(*opts) ⇒ Hash
Builds a new role by saving it into the #permissions_hash class instance variable Valid options are :attributes, :associations, :scope, :uses_db, :extend
14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
# File 'lib/pundit_roles/policy/role.rb', line 14 def role(*opts) user_opts = opts..dup = user_opts.slice(*_role_default_keys) raise ArgumentError, 'Please provide at least one role' unless opts.present? @permissions_hash = {} if @permissions_hash.nil? .each do |key, value| if value.present? expected = _role_option_validations[key] do_raise = true expected.each do |type| do_raise = false if value.is_a? type end raise ArgumentError, "Expected #{expected} for #{key}, got #{value.class}" if do_raise end end opts.each do |role| raise ArgumentError, "Expected Symbol for #{role}, got #{role.class}" unless role.is_a? Symbol @permissions_hash[role] = OptionBuilder.new(self, [:attributes], [:associations], [:scope]).permitted end end |