Sha256: b024c8770dc10f4933c0ba4c78e1cd477619ed364785d293d91e791876be9e9b

Contents?: true

Size: 800 Bytes

Versions: 2

Compression:

Stored size: 800 Bytes

Contents

# frozen_string_literal: true

module ActionPolicy
  module ScopeMatchers
    # Adds `relation_scope` method as an alias
    # for `scope_for :active_record_relation`
    module ActiveRecord
      def relation_scope(*__rest__, &__block__)
        scope_for(:active_record_relation, *__rest__, &__block__)
      end; respond_to?(:ruby2_keywords, true) && (ruby2_keywords :relation_scope)
    end
  end
end

# Register relation scope matcher
ActionPolicy::Base.scope_matcher :active_record_relation, ActiveRecord::Relation

# Add alias to base policy
ActionPolicy::Base.extend ActionPolicy::ScopeMatchers::ActiveRecord

ActiveRecord::Relation.include(Module.new do
  def policy_name
    if model.respond_to?(:policy_name)
      model.policy_name.to_s
    else
      "#{model}Policy"
    end
  end
end)

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
action_policy-0.6.7 lib/.rbnext/2.7/action_policy/rails/scope_matchers/active_record.rb
action_policy-0.6.6 lib/.rbnext/2.7/action_policy/rails/scope_matchers/active_record.rb