[Dbix-class] Bug with find_or_new and insert_or_update
with postgresql: any success?
Alex Povolotsky
tarkhil at over.ru
Tue Feb 26 09:56:21 GMT 2008
Zbigniew Lukasiak wrote:
> On Mon, Feb 25, 2008 at 9:53 PM, Alex Povolotsky <tarkhil at over.ru> wrote:
>
>> Hello!
>>
>> I've found in archives nearly my case, that passing NULL to Pg is not
>> 'not passing column at all', so adding a new row with a simple code like
>> this
>>
>> my $loc = $c->model($self->model_name)->find_or_new({lid => $id});
>> if ($form->submitted && $form->validate) {
>> # Fill in
>> data
>>
>> $loc->name($form->field('name'));
>> $loc->descr($form->field('descr'));
>> $loc->update_or_insert();
>> $c->req->redirect($c->uri_for('list'));
>> }
>>
>> is impossible.
>>
>> Maybe someone has found a good way to solve the problem, or at least a
>> working workaround?
>>
>
> Just guessing - are you using HTML::FormFu? HTML::FormFu::Model::DBIC
> integrates FormFu with DBIC and works around this problem (by not
> using find_or_new nor update_or_create). Personally I would be very
> happy to see the debate on using the *_or_* methods for tables with Pg
> serial primary keys reopened - but there are workarounds for it.
>
>
>
I'm using FormBuilder.
I've made an UGLY workaround
if (defined $loc->lid) {
$loc->name($form->field('name'));
$loc->descr($form->field('descr'));
$loc->update();
} else {
$c->model($self->model_name)->create({ map { $_ =>
$form->field($_) } qw(name descr)});
}
But I hate it. Who can fix internal logic of DBIx::Class request builder?...
Alex.
More information about the DBIx-Class
mailing list