The split_values plugin splits the values hash retreived from the database, and moves keys from the values hash that are not columns in the model’s dataset to a separate hash. This makes it so the values hash only stores columns from the model’s dataset.
Among other things, this allows you to save model objects even if they were retrieved with additional columns, and have equality comparisons with other instances not care about non-column values.
Example:
class Album < Sequel::Model plugin :split_values end a1 = Album[1] a2 = Album.select_append(Sequel.as(true, :exists))[1] a1.name # => 'Album Name' a2.name # => 'Album Name' a1[:exists] # => nil a2[:exists] # => true a1 == a2 # => true a2.values # => {:id=>1, :name=>'Album Name'} a2.save # Works
Usage:
# Make all model subclass instances split values # (called before loading subclasses) Sequel::Model.plugin :split_values # Make the Album class split values Album.plugin :split_values