module Muffin::Policy
Public Class Methods
included(base)
click to toggle source
# File lib/muffin/frostings/policy.rb, line 47 def self.included(base) base.extend ClassMethods end
Public Instance Methods
attribute_permitted?(name)
click to toggle source
# File lib/muffin/frostings/policy.rb, line 22 def attribute_permitted?(name) block = self.class.attributes[name]&.permit return instance_exec(&block) if block true end
attribute_value_permitted?(name, value)
click to toggle source
# File lib/muffin/frostings/policy.rb, line 42 def attribute_value_permitted?(name, value) return true if permitted_values(name).nil? Array.wrap(value).all? { |e| permitted_values(name).include? e } end
permit!()
click to toggle source
# File lib/muffin/frostings/policy.rb, line 13 def permit! raise NotPermittedError unless permitted? end
permit_attribute!(name, value)
click to toggle source
# File lib/muffin/frostings/policy.rb, line 28 def permit_attribute!(name, value) return false unless attribute_permitted?(name) permitted = attribute_value_permitted?(name, value) return false if value == nil && !permitted raise NotPermittedError unless permitted true end
permitted?()
click to toggle source
# File lib/muffin/frostings/policy.rb, line 17 def permitted? return true unless self.class.permission_block instance_eval(&self.class.permission_block) end
permitted_values(name)
click to toggle source
# File lib/muffin/frostings/policy.rb, line 36 def permitted_values(name) block = self.class.attributes[name]&.permitted_values return instance_exec(&block) if block nil end