= New Features * An update_refresh plugin has been added, for refreshing a model instance when updating. The default behavior is to only refresh when inserting. However, if you have triggers on the model's table, it's a good idea to refresh when updating to pick up the possibly changed values. On databases that support UPDATE RETURNING, such as PostgreSQL, the update and refresh are done in a single query. * A delay_add_association plugin has been added, for delaying add_* method calls for associations until after the receiver has been saved, if the receiver is a new object. Example: artist = Artist.new(:name=>'Foo') artist.add_album(Album.new(:name=>'Bar')) # No database queries yet artist.save # Saves artist, then album * A validate_associated plugin has been added, for validating associated objects when validating the current object. This was extracted from the nested_attributes plugin, and is also used by the delay_add_association plugin. For example, if you have an albums association and you want to validate all associated objects before saving the current object, you can cal validate_associated_object for each object: def validate super reflection = association_reflection(:albums) associations[:albums].each do |obj| validate_associated_object(reflection, obj) end end = Other Improvements * Database#transaction now returns the block return value if :rollback=>:always is used. Previously, it would return nil in that case. * Postgres::JSONBOp#[] and #get_text now return JSONBOp instances instead of JSONOp instances. * Model#move_to, #move_up, and #move_down in the list plugin now automatically handle out-of-range targets by defaulting to the first or last position in the list. Previously, using an out of range target would raise an exception. * Database#add_named_conversion_proc on PostgreSQL now works for enum types. * dataset.call_sproc(:insert, ...) now works correctly on JDBC. * postgresql:// connection strings are now supported, since that is the protocol name supported by libpq. * Sequel has switched from rspec to minitest/spec for testing, and now uses random test order when testing. During the conversion process, many test order dependency bugs were fixed. = Backwards Compatibility * The deprecated fdbsql, jdbc/fdbsql, and openbase adapters have been removed.