Sha256: bbb97e3e6116cc15ca32375bccdb6786f8cc0a921c7c5c4d9083f660fe82ff13

Contents?: true

Size: 759 Bytes

Versions: 6

Compression:

Stored size: 759 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(...)
        scope_for(:active_record_relation, ...)
      end
    end
  end
end

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

ActiveSupport.on_load(:active_record) do
  # Register relation scope matcher
  ActionPolicy::Base.scope_matcher :active_record_relation, ActiveRecord::Relation

  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)
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
action_policy-0.7.3 lib/action_policy/rails/scope_matchers/active_record.rb
action_policy-0.7.2 lib/action_policy/rails/scope_matchers/active_record.rb
action_policy-0.7.1 lib/action_policy/rails/scope_matchers/active_record.rb
action_policy-0.7.0 lib/action_policy/rails/scope_matchers/active_record.rb
action_policy-0.6.9 lib/action_policy/rails/scope_matchers/active_record.rb
action_policy-0.6.8 lib/action_policy/rails/scope_matchers/active_record.rb