ScopeComposer

class Example

  include ScopeComposer::Model

  scope_composer_for :search

  search_helper :integer, ->(v){ v.to_s.to_i }

  search_scope :limit
  search_scope :offset, ->(i){ where(offset: integer(i) ) }

  search_helper :find, ->(id){ Example.where(self.attributes).find(id) }

  def self.where(attrs)
    puts "where: #{attrs.to_param}"
    self
  end

  def self.find(id)
    puts "find by #{id}"
    self.new
  end

end

Example.limit(10).offset('50').find(10)
Example.limit(10).offset('50').to_param

scope = Example.limit(10)
scope.offset(20)
scope.find(2)

where: limit=10&offset=50
find by 10
Example:0x007ff8eb8ce920