Inflating and deflating storable data

From ClassDBI

Revision as of 15:32, 2 May 2007 by EdwardSabol (Talk | contribs)
(diff) ← Older revision | Current revision (diff) | Newer revision → (diff)
Jump to: navigation, search

When using the output of Storable's nfreeze as data in Class::DBI, it will break.

You need to escape it, either uuencode, base64, or in this example URI escaping.

__PACKAGE__->add_trigger(before_update => sub {
                          my $obj = shift;
                          if ($obj->_unserialised_display_options) {
                            $obj->set( display_options => uri_escape(nfreeze($obj->_unserialised_display_options)) );
                          }
                          return;
                        });

__PACKAGE__->add_trigger(select => sub {
                          my $obj = shift;
                          if ($obj->display_options) {
                            $obj->set( _unserialised_display_options => thaw(uri_unescape($obj->display_options)) );
                          } else {
                            $obj->set( _unserialised_display_options => { } );
                          }
                          return;
                        });
Personal tools