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]
