Hi Jeremy,

Great work!

I do however have an issue:

association_pks delay_pks: :always incompatible with disassociating last 
object?

In version 4.31.0
association_pks.rb

line 144 (the delayed case, after_save) performs call unless pks.empty?
line 183 (no delay) always performs call

My experience is that I cannot disassociate the last associated object when 
using the delay option set to always, since the pks array will be empty in 
this case.
Is this by design or a bug?

If by design, how should I approach this instead?

Thanks,                                                                         
                                                                                
                                                                                
                                  


Jonas

On Wednesday, July 1, 2015 at 5:16:51 PM UTC+2, Jeremy Evans wrote:
>
> Sequel 4.24.0 has been released!
>
> = New Features
>
> * A pg_inet_ops extension has been added, for DSL support for
>   calling PostgreSQL inet functions and operators.  Example:
>
>     r = Sequel.pg_inet_op(:inet)
>
>     ~r                                 # ~inet
>     r & :other                         # inet & other
>     r | :other                         # inet | other
>     r << :other                        # inet << other
>     r >> :other                        # inet >> other
>  
>     r.contained_by(:other)             # inet << other
>     r.contained_by_or_equals(:other)   # inet <<= other
>     r.contains(:other)                 # inet >> other
>     r.contains_or_equals(:other)       # inet >>= other
>     r.contains_or_contained_by(:other) # inet && other
>  
>     r.abbrev           # abbrev(inet)
>     r.broadcast        # broadcast(inet)
>     r.family           # family(inet)
>     r.host             # host(inet)
>     r.hostmask         # hostmask(inet)
>     r.masklen          # masklen(inet)
>     r.netmask          # netmask(inet)
>     r.network          # network(inet)
>     r.set_masklen(16)  # set_masklen(inet, 16)
>     r.text             # text(inet)
>
> * The association_pks plugin now supports a :delay_pks association
>   option.  When set to true, this makes the methods created by the
>   plugin usable on new objects, by delaying the saving of the
>   associated pks until after the new object has been saved.  When
>   set to :always, this also changes the behavior of the methods
>   for existing objects, so that nothing is persisted until the
>   object has been saved.  Example:
>
>     Album.plugin :association_pks
>     Album.many_to_many :tags, :delay_pks=>true
>
>     album = Album.new(:tag_pks=>[1,2,3]) # No database query
>     album.save # Queries to insert album, and then update albums_tags
>
> * The class_table_inheritance plugin now supports subclasses that
>   don't require additional columns, and therefore do not need to
>   join to additional tables.  It now loads the
>   single_table_inheritance plugin and supports options that were
>   previously only supported by single_table_inheritance, such as the
>   :key_map and :key_chooser options.
>
> * The validation_helpers plugin now supports a :from=>:values option
>   in the validation methods, which will take the value directly from
>   the values hash instead of calling the related method.  This
>   allows validation_helpers to differentiate between validations on
>   underlying database column and validations on the model.
>
>   The auto_validations plugin has been modified to use this feature,
>   since all validations it generates are for validations on the
>   underlying database columns.
>
> * The auto_validations plugin now supports options to pass to each
>   of the underlying validation methods:
>
>     Sequel::Model.plugin :auto_validations,
>       :unique_opts=>{:only_if_modified=>true}
>
>   In addition to :unique_opts, there is support for :not_null_opts
>   (for NOT NULL columns without a default), :explicit_not_null_opts
>   (for NOT NULL columns with a default), :max_length_opts, and
>   :schema_types_opts. 
>
> * The update_refresh plugin now accepts a :columns option, which
>   specifies the columns to refresh.  This option is currently only
>   respected if the related dataset supports RETURNING.
>
> * The :timeout option to Database#listen in the postgres adapter can
>   now be a callable object, previously it had to be Numeric.  This
>   allows you to dynamically change the timeout based on current
>   application state.
>
> = Other Improvements
>
> * The uniqueness validations added by the auto_validations plugin now
>   use a symbol key in the related Errors instance if the underlying
>   index was on a single column.  Previously, the uniqueness
>   validations for a single column would use an array key in the
>   related Errors instance.
>
> * The jdbc subadapters now correctly handle 64-bit autoincrementing
>   primary keys.
>
> * The jdbc subadapters now work correctly if they issue queries while
>   the subadapter is being loaded.  This can happen in the
>   jdbc/postgresql adapter if the pg_hstore extension is used.
>
> = Backwards Compatibility
>
> * The deprecated db2 and dbi adapters have been removed.
>
> Thanks,
> Jeremy
>

-- 
You received this message because you are subscribed to the Google Groups 
"sequel-talk" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/sequel-talk.
For more options, visit https://groups.google.com/d/optout.

Reply via email to