Sha256: 193c06a3fd6dd221bfaa09dca1993da2e9bc6d8037ae6a462c0b593e7f734d4b

Contents?: true

Size: 640 Bytes

Versions: 8

Compression:

Stored size: 640 Bytes

Contents

# Encapsulation/Separation of precondition logic for Pundit policies
module NaturalResource::PolicyPreconditions
  private

  def precondition(record, precondition=nil, identifier: nil, message: nil)
    precondition_met = if block_given?
                       yield
                     else
                       record.public_send(precondition)
                     end

    identifier ||= record.class.to_s.underscore
    message ||= "is not #{precondition.to_s.gsub(/\?*$/, '')}"

    unless precondition_met
      @failure_status ||= :precondition_failed
      @errors[identifier] << message
    end

    precondition_met
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
natural_resource-0.2.0 lib/natural_resource/policy_preconditions.rb
natural_resource-0.1.6 lib/natural_resource/policy_preconditions.rb
natural_resource-0.1.5 lib/natural_resource/policy_preconditions.rb
natural_resource-0.1.4 lib/natural_resource/policy_preconditions.rb
natural_resource-0.1.2 lib/natural_resource/policy_preconditions.rb
natural_resource-0.1.2.pre.3 lib/natural_resource/policy_preconditions.rb
natural_resource-0.1.2.pre.2 lib/natural_resource/policy_preconditions.rb
natural_resource-0.1.2.pre lib/natural_resource/policy_preconditions.rb