Module: Sequel::Plugins::BooleanReaders
- Defined in:
- lib/sequel/plugins/boolean_readers.rb
Overview
The BooleanReaders plugin allows for the creation of attribute? methods for boolean columns, which provides a nicer API. By default, the accessors are created for all columns of type :boolean. However, you can provide a block to the plugin to change the criteria used to determine if a column is boolean. The block is yielded with the column symbol for each column in the models dataset.
Usage:
# Add boolean attribute? methods for all columns of type :boolean
# in all model subclasses (called before loading subclasses)
Sequel::Model.plugin :boolean_readers
# Add boolean readers for all tinyint columns in the Album class
Album.plugin(:boolean_readers){|c| db_schema[c][:db_type] =~ /\Atinyint/}
# Add a boolean reader for a specific columns in the Artist class
Artist.plugin(:boolean_readers){|c| [:column1, :column2, :column3].include?(c)}
Defined Under Namespace
Modules: ClassMethods
Constant Summary collapse
- DEFAULT_BOOLEAN_ATTRIBUTE_PROC =
Default proc for determining if given column is a boolean, which just checks that the :type is boolean.
lambda{|c| s = db_schema[c] and s[:type] == :boolean}
Class Method Summary collapse
-
.configure(model, &block) ⇒ Object
Add the boolean_attribute? class method to the model, and create attribute? boolean reader methods for the class’s columns if the class has a dataset.
Class Method Details
.configure(model, &block) ⇒ Object
Add the boolean_attribute? class method to the model, and create attribute? boolean reader methods for the class’s columns if the class has a dataset.
30 31 32 33 34 35 |
# File 'lib/sequel/plugins/boolean_readers.rb', line 30 def self.configure(model, &block) model.instance_eval do (class << self; self; end).send(:define_method, :boolean_attribute?, &(block || DEFAULT_BOOLEAN_ATTRIBUTE_PROC)) send(:create_boolean_readers) if @dataset end end |