Sha256: b16df270ce8223236550c28c52152588a77a95d59cd86079a4fd5299f542debb

Contents?: true

Size: 848 Bytes

Versions: 10

Compression:

Stored size: 848 Bytes

Contents

class Dorsale::ApplicationPolicy
  attr_reader :user, :subject

  def initialize(user, subject)
    @user    = user
    @subject = subject
  end

  def record
    subject
  end

  def policy(subject)
    Pundit.policy(user, subject)
  end

  def policy_scope(subject)
    Pundit.policy_scope(user, subject)
  end

  def self.inherited(klass)
    super(klass)
    klass.define_subject_accessor!
  end

  def self.define_subject_accessor!
    # Dorsale::BillingMachine::InvoicePolicy -> :invoice
    object_type = to_s.demodulize.gsub("Policy", "").underscore.to_sym

    # Avoid user/subject conflict
    object_type = :other_user if object_type == :user

    send(:define_method, object_type) { subject }
  end

  class Scope
    attr_reader :user, :scope

    def initialize(user, scope)
      @user  = user
      @scope = scope
    end
  end
end

Version data entries

10 entries across 10 versions & 1 rubygems

Version Path
dorsale-4.0.0 app/policies/dorsale/application_policy.rb
dorsale-3.20.0 app/policies/dorsale/application_policy.rb
dorsale-3.19.1 app/policies/dorsale/application_policy.rb
dorsale-3.19.0 app/policies/dorsale/application_policy.rb
dorsale-3.18.0 app/policies/dorsale/application_policy.rb
dorsale-3.17.0 app/policies/dorsale/application_policy.rb
dorsale-3.16.0 app/policies/dorsale/application_policy.rb
dorsale-3.15.0 app/policies/dorsale/application_policy.rb
dorsale-3.14.11 app/policies/dorsale/application_policy.rb
dorsale-3.14.10 app/policies/dorsale/application_policy.rb