Follow-up to my previous message: The problem is in line 426 in DBIC.pm (current version on github):
$dbic->discard_changes unless( $dbic->$rel ); DBIx::Class throws an exception on $dbic->$rel if the foreign key column for $rel is undefined, except where the foreign key column has the same name as $rel, in which case undef is returned (since DBIx::Class actually executes $dbic->$column). An easy solution is simply to use eval: $dbic->discard_changes unless( eval { $dbic->$rel } ); Cheers, -- Peter --- On Mon, 28/2/11, Peter Shangov <pshan...@yahoo.com> wrote: > From: Peter Shangov <pshan...@yahoo.com> > Subject: [html-formfu] HTML::FormFu::Model::DBIC t\update\create_belongs_to.t > problems > To: html-formfu@lists.scsys.co.uk > Date: Monday, 28 February, 2011, 18:31 > Hi all, > > I have been struggling with this for the past couple of > hours: > > The schema definition in t\lib\MySchema\Band.pm uses a > relationship name (‘manager’) identical to the name of > the foreign key column through which it is defined, and > which runs against the naming conventions in our databases: > > __PACKAGE__->add_columns( > id => { > data_type => "INTEGER", is_nullable => 0 }, > manager => { data_type => > "INTEGER", is_nullable => 1 }, > … > ); > … > __PACKAGE__->belongs_to( manager => > 'MySchema::Manager' ); > > If I change ‘manager’ to ‘manager_id’: > > __PACKAGE__->add_columns( > id => { > data_type => "INTEGER", is_nullable => 0 }, > manager_id => { data_type => > "INTEGER", is_nullable => 1 }, > ); > … > __PACKAGE__->belongs_to( manager => > 'MySchema::Manager', ‘manager_id’ ); > > prove t\update\belongs_to_create.t fails with the following > error: > > MySchema::Band::manager(): Unable to resolve relationship > 'manager' from object MySchema::Band=HASH(0x189d124): column > 'manager_id' not loaded from storage (or not passed to new() > prior to insert()). You probably need to call > ->discard_changes to get the server-side defaults from > the database. > > Any ideas why this change causes such a difference? > > Using: > DBIx::Class 0.08127 > HTML::FormFu 0.08002 > HTML::FormFu::Model::DBIC 0.08002 > > Cheers, > > -- > Peter > > > _______________________________________________ > HTML-FormFu mailing list > HTML-FormFu@lists.scsys.co.uk > http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/html-formfu > _______________________________________________ HTML-FormFu mailing list HTML-FormFu@lists.scsys.co.uk http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/html-formfu