New Features¶ ↑
-
A subset_conditions plugin has been added, which adds a method for each subset that returns the filter conditions for the subset. This makes it easier to reuse the subset conditions:
class Foo < Sequel::Model plugin :subset_conditions subset :active, :active=>true end Foo.exclude(Foo.active_conditions) Foo.where(:a=>1).or(Foo.active_conditions)
-
A boolean_subsets plugin has been added, which adds a subset for each boolean column:
# Assume boolean column :active Foo.plugin :boolean_subsets Foo.active # SELECT * FROM foos WHERE (active IS TRUE)
You can provide a block to the plugin to change the arguments passed to subset:
Foo.plugin :boolean_subsets do |column| [:"where_#{column}", column] end Foo.where_active # SELECT * FROM foos WHERE active
As with similar plugins, you can add the boolean_subsets plugin to
Sequel::Model
itself, and all subclasses created afterward will have the boolean subset methods automatically created.
Other Improvements¶ ↑
-
If Model#refresh can’t find the related row,
Sequel
now raises a Sequel::NoExistingObject exception instead of a genericSequel::Error
exception. -
In the csv_serializer plugin, when calling to_csv on a model class or dataset, instead of using [] to access data, send is used to call methods. This is more similar to other plugins as well as Model#to_csv.
-
The list plugin now works better with the auto_validations plugin, or any other time there is a validation on the position column.
Backwards Compatibility¶ ↑
-
The change to the csv_serializer plugin can change results if you are overriding any of the column accessor methods. It can also break existing code if one of the columns being used isn’t defined as a method or the method requires more than one argument.