Skip to content

Using Query object as scope doesn't seem to allow composition #31

@perezperret

Description

@perezperret

To be clear, I'm using your implementation as a reference and not importing it directly, so it's likely I'm missing something!

If I use a query object like this:

module Transactions
  class AcceptedQuery < Patterns::Query
    queries Transaction

    private

    def query
      relation.active.where(accepted_at: 5.days.ago..DateTime.current)
    end
  end
end
class Transaction < ActiveRecord::Base
  scope :latest, -> { order(created_at: :desc) }
  scope :query_object_scope, Transactions::AcceptedQuery
end

If I try to compose the scopes:

Transaction.latest.accepted

Transactions::AcceptedQuery.call will not receive Transaction.latest as the scope argument, but rather it's base_relation ie: Transaction.all. Am I looking at this right? Is there a workaround for this other than using a class method?

I like the elegance of scope :accepted, Transactions::AcceptedQuery but I can't get it to work.

Thank you for your time and energy! I've learned a lot from this Repo already!

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions