Last Update: 2015-06-01 07:48:19 -0700

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')
    # 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
      reflection = association_reflection(:albums)
      associations[:albums].each do |obj|
        validate_associated_object(reflection, obj)

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.