On Tue, Sep 30, 2008 at 2:20 PM, Matt S Trout <[EMAIL PROTECTED]> wrote: > On Tue, Sep 30, 2008 at 09:28:50AM +0200, Zbigniew Lukasiak wrote: >> The tricky part is when you load data from the form into the new row. >> You need to delete the pk from it - because otherwise at >> update_or_insert time it would issue an insert with pk = NULL - and >> this will fail in Pg (for example). The point is that you cannot feed >> the same data to the find and to the insert calls - but >> update_or_create does that - and why it does not have much choice is >> another very long story. > > Well, yes. If you have an auto-increment PK and you don't have a value for > it, then > > (1) there's no form field in the first place, so that's not an issue > > (2) you know you can't possibly find anything, so you wouldn't call > update_or_create, you'd just call create > > I presume this is what Oliver's doing, which is why his code works. > > Nothing tricky at all.
This method assumes that you don't get the PK in the ResultSet in the internal conditions. I is ok if you have the full controll over the ResultSet - but if you do admit this possibility (for example when you traverse a belongs_to relation, or if you use RestrictedWithObject) - then you would have to inspect it o check what part of the PK is there to decide if you should go directly to ->create. Since currently there is no easy and sound way of doing this inspection (and for some, rather convoluted - I admit, cases it is impossible - that is it is undecidable - i.e. cannot be solved by an algorithm) - this makes this method unsuitable for my purposes. > FormFu didn't used to do this, but Carl Franks agreed with me that this > was a bug in FormFu. If your code still has this bug, I suggest you fix it. What is a bug for you? -- Zbigniew Lukasiak http://brudnopis.blogspot.com/ http://perlalchemy.blogspot.com/ _______________________________________________ List: http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/dbix-class IRC: irc.perl.org#dbix-class SVN: http://dev.catalyst.perl.org/repos/bast/DBIx-Class/ Searchable Archive: http://www.grokbase.com/group/[EMAIL PROTECTED]