module GraphQR::ScopeItems

This extension adds the PolicyProvider scope to the fields. When using the extension, ActiveRecord::Relation fields will be scoped.

To use this extension add `extend GraphQR::ScopeItems` on the `GraphQL::Schema::Object` you want, or in your `BaseObject`

Public Instance Methods

scope_items(items, context) click to toggle source

The method checks whether the items are a ActiveRecord::Relation or not. If they are, it runs the PolicyProvider `authorized_records` scope.

# File lib/graphqr/scope_items.rb, line 14
def scope_items(items, context)
  if scopable_items?(items)
    context[:policy_provider].authorized_records(records: items)
  else
    items
  end
end

Private Instance Methods

scopable_items?(items) click to toggle source
# File lib/graphqr/scope_items.rb, line 24
def scopable_items?(items)
  items.is_a? ActiveRecord::Relation
end