On May 7, 2007, at 9:02 AM, Matt S Trout wrote:

On Sun, May 06, 2007 at 09:16:41AM -0400, Jason Kohles wrote:
So everybody probably saw my confusion with inflation from yesterday,
and while it is all working now (thanks Claco!) I have to admit I
still find the behavior counter-intuitive at best.  I guess when I
was just inflating DateTime objects it made more sense, since the
inflated values were so much more complex than the representation
that was stored in the database, but when I started using
DBIx::Class::InflateColumn::Currency, it seemed odd to me that
'$10.00' would be inflated to a Data::Currency object if it came from
the database, but not if it came from the user.  I've fixed this for
my immediate need by writing an HTML::FormFu::Inflator subclass that
parallels DBIx::Class::InflateColumn::Currency, but going forward I'd
like to avoid repeating so much code, so I've come up with an idea to
extend DBIx::Class::InflateColumn to allow user-provided values to be
inflated the same way that database values are.

Well, if you call $obj->inflated_field('$10.00');

then do $obj->inflated_field; the second call will return the inflated object.

I'm not sure I see what the problem you're trying to solve is?

The original problem I was having was a combination of DBIx::Class::FormFu and DBIx::Class::InflateColumn::Currency. When a form was submitted that had dollar amounts in the inflated fields, the database would get updated with 0's in all the currency columns, DBIC_TRACE revealed that this was because the un-inflated values were being passed to the database and MySQL was setting those fields to 0 since it considered the data it was getting to be non-numeric as it started with a '$'. My attempts to locate the source of the problem (and the responses I got to my initial post) all suggested that only data coming from the database would be inflated and that if I wanted to set it manually I needed to do $obj->inflated_field ( Data::Currency->new( '$10.00' ) ). Since you indicated this isn't the case, I built a minimal test case this morning and confirmed that indeed, this should just work, so I guess now I need to go back to trying to figure out why the wrong information is being passed to the database in the larger application.

So it appears the RFC was actually an attempt to add functionality that does indeed already exist, and now I get to go back to debugging...

--
Jason Kohles
[EMAIL PROTECTED]
http://www.jasonkohles.com/
"A witty saying proves nothing."  -- Voltaire



_______________________________________________
List: http://lists.rawmode.org/cgi-bin/mailman/listinfo/dbix-class
Wiki: http://dbix-class.shadowcatsystems.co.uk/
IRC: irc.perl.org#dbix-class
SVN: http://dev.catalyst.perl.org/repos/bast/trunk/DBIx-Class/
Searchable Archive: http://www.mail-archive.com/[email protected]/

Reply via email to