On Sunday, March 22, 2020 at 9:00:37 AM UTC-7, Petr Kaleta wrote:
>
> Hello, it looks like there's an issue when using both auto_validations and
> defaults_setter plugin.
>
> I am using sequel 5.30.0
>
> Please have a look on the following example:
>
> create_table :foo_bars do
> primary_key :id
>
> column :name, 'character varying(64)', null: false
> column :state, 'smallint', null: false
> end
>
> class FooBar < Sequel::Model(:foo_bars)
> plugin :auto_validations
> plugin :defaults_setter
>
> default_values[:state] = 1
> end
>
> FooBar.create # => Sequel::ValidationFailed: state is not present
>
> With validation_helpers plugin I have no issues and everything works as
> expected...
>
defaults_setter's documentation states:
The defaults_setter plugin makes the column getter methods return the
default values for new objects, if the values have not already been set.
defaults_setter doesn't automatically set the values in the values hash
before saving, but you can do that:
class FooBar
def before_validation
super
self.state ||= state
end
end
So this isn't a bug, it is expected behavior. Note that older versions of
defaults_setter (before Sequel 4) did eagerly set the default values when
the model instance was created. That was changed for performance reasons.
Note that the best way to fix your issue is to set 1 as the default for the
state column in the database.
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 view this discussion on the web visit
https://groups.google.com/d/msgid/sequel-talk/e7a1da93-526e-433f-a6ac-ad87ddf8d891%40googlegroups.com.