On Thursday, October 10, 2013 4:12:08 PM UTC-7, David Lutterkort wrote:
>
> Hi,
>
> in my DB schema I previously created a constraint using
> constraint_validations using
>
> Sequel.migration do
> up do
> create_table :repos do
> validate do
> format URL_RX, :url, :name => "url_is_simple"
> end; end; end; end
>
> I now need to modify the schema so that it allows NULL's for url. I am not
> sure what the right way using constraint_validations is. My attempt was to
> drop and recreate the constraint:
>
> Sequel.migration do
> up do
> alter_table :repos do
> validate do
> drop 'url_is_simple'
> format URL_RX, :url, :name => "url_is_simple", :allow_nil => true
> end; end; end; end
>
> After migrating, the repos table has the correct constraint;
> unfortunately, the url_is_simple validation is missing from
> sequel_constraint_validations. Is there another way to achieve this ?
>
Drops are currently processed after all other constraint validation
statements, so most likely what it is doing is adding the new format with
the same name, then dropping it. You could run it with an SQL logger to
check that.
I can probably change the code so that drops are processed before the other
queries, allowing your code to work (I'll try to do that before the next
release if it doesn't cause problems). In the meantime, use a separate
after_table block for the drop:
alter_table :repos do
validate do
drop 'url_is_simple'
end
end
alter_table :repos do
validate do
format URL_RX, :url, :name => "url_is_simple", :allow_nil => true
end
end
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 http://groups.google.com/group/sequel-talk.
For more options, visit https://groups.google.com/groups/opt_out.