On Wed, 15 Aug 2007, John Napiorkowski wrote:

Hi,

I noticed that when using ->populate in void mode that
it skips any overrides to ->insert and the like.  This
is because when I wrote that I simple pass the data to
->execute_array in the storage class.

I don't see an easy way around this since these types
of modules are overriding ->insert directly, not so
other method I can call.

For the moment I propose to update the documentation,
since this is the kind of thing that could sting you
if you don't understand what's going on.  For the long
term I think we need to separate the methods that
actually modify the storage, something
'prepare_insert' that calls 'insert' and then
component authors would override that instead of new.
Then in the ->populate I could call that to perform
any needed data manipulation.

Or is there an easier way?



Not to degrade your efforts or anything, but I think if we make populate do all the things that create does, it doesn't really have a reason for existance. IIRC it was supposed to be a quick method for entering multiple straight/known values for testing/setting up a database..

Therefore I think documenting it to not run inserts, components and any other fancy add-ons is fine.

We should also enhance the docs pointing at create(), when I looked recently it was quite hard to find, whereas populate is rather easier. (Even the synopsis in DBIx::Class pod doesn't use it). I added a bunch of POD to the actual method in ::ResultSet, but it needs to be more noticable somehow..

Jess


_______________________________________________
List: http://lists.rawmode.org/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]

Reply via email to