I understand that, but you should not get attribute value from underlaying 
values hash, so if getter works, validations should also work. And as I 
mentioned there's absolutely no issue with validation_helpers plugin and 
everything works as expected. So there's a behaviour inconsistency in 
auto_validations plugin...

Dne neděle 22. března 2020 17:19:04 UTC+1 Jeremy Evans napsal(a):
>
> 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/b14ffd1b-93f8-4344-b25d-20dc329422cb%40googlegroups.com.

Reply via email to