Module Sequel::Plugins::Finder
In: lib/sequel/plugins/finder.rb

The finder plugin adds Model.finder for defining optimized finder methods. There are two ways to use this. The recommended way is to pass a symbol that represents a model class method that returns a dataset:

  def Artist.by_name(name)
    where(name: name)
  end

  Artist.finder :by_name

This creates an optimized first_by_name method, which you can call normally:

  Artist.first_by_name("Joe")

The alternative way to use this to pass your own block:

  Artist.finder(name: :first_by_name){|pl, ds| ds.where(name: pl.arg).limit(1)}

Additionally, there is a Model.prepared_finder method. This works similarly to Model.finder, but uses a prepared statement. This limits the types of arguments that will be accepted, but can perform better in the database.

Usage:

  # Make all model subclasses support Model.finder
  # (called before loading subclasses)
  Sequel::Model.plugin :finder

  # Make the Album class support Model.finder
  Album.plugin :finder

Methods

apply  

Classes and Modules

Module Sequel::Plugins::Finder::ClassMethods

Constants

FINDER_TYPES = [:first, :all, :each, :get].freeze

Public Class methods

[Source]

    # File lib/sequel/plugins/finder.rb, line 38
38:       def self.apply(mod)
39:         mod.instance_exec do
40:           @finders ||= {}
41:           @finder_loaders ||= {}
42:         end
43:       end

[Validate]