Sequel::Plugins::
InlineSchema module
A replacement for Sequel’s old built in schema plugin. It allows you to define your schema directly in the model using Model.set_schema (which takes a block similar to Database#create_table), and use Model.create_table to create a table using the schema information.
Usage
There are several ways to use this plugin.
Add the schema methods to all model subclasses:
Sequel::Model.plugin :inline_schema
Add the schema methods to a particular class:
Album.plugin :inline_schema Album.set_schema { ... } Album.create_table?
Add the schema methods to an abstract base class:
# lib/acme/model.rb require 'sequel' require 'acme' module ACME Model = Class.new( Sequel::Model ) Model.def_Model( ACME ) class Model plugin :inline_schema end end # lib/acme/product.rb require 'acme/model' class ACME::Product < ACME::Model( :products ) set_schema do primary_key :id String :sku, null: false String :name, null: false ... end end
Notable Model Methods
See Sequel::Plugins::InlineSchema::ClassMethods
for documentation for the methods the plugin adds to your model class/es.
Of particular note:
A model class with an inline schema has several methods for creating/dropping its associated table:
-
create_table
-
create_table!
-
create_table?
-
table_exists?
-
drop_table
-
drop_table?
If you use it with an abstract base class, you can ask the base class which of its subclasses need their tables created:
-
uninstalled_tables
It can also define hooks for creating and dropping the table:
-
before_create_table
-
after_create_table
-
before_drop_table
-
after_drop_table
As with other Sequel
model hooks, you can prevent the action from the before_*
hooks by calling cancel_action
.