Module: Sequel::Plugins::InvertedSubsets

Defined in:
lib/sequel/plugins/inverted_subsets.rb

Overview

The inverted_subsets plugin adds another method for each defined subset, which inverts the condition supplied. By default, inverted subset method names are prefixed with not_.

You can change the prefix, or indeed entirely customise the inverted names, by passing a block to the plugin configuration:

# Use an exclude_ prefix for inverted subsets instead of not_
Album.plugin(:inverted_subsets){|name| "exclude_#{name}"}

Usage:

# Add inverted subsets in the Album class
Album.plugin :inverted_subsets

# This will now create two methods, published and not_published
Album.dataset_module do
  where :published, published: true
end

Album.published.sql
# SELECT * FROM albums WHERE (published IS TRUE)

Album.not_published.sql
# SELECT * FROM albums WHERE (published IS NOT TRUE)

Defined Under Namespace

Modules: DatasetModuleMethods

Class Method Summary collapse

Class Method Details

.apply(model, &block) ⇒ Object



32
33
34
35
36
37
38
39
40
41
42
# File 'lib/sequel/plugins/inverted_subsets.rb', line 32

def self.apply(model, &block)
  model.instance_exec do
    @dataset_module_class = Class.new(@dataset_module_class) do
      include DatasetModuleMethods
      if block
        define_method(:inverted_subset_name, &block)
        private :inverted_subset_name
      end
    end
  end
end