| Revision 240 (by dpavlin, 2008/10/01 19:58:37) |
return id correctly
|
package A3C::Record;
use strict;
use warnings;
use base 'Jifty::Record';
use Data::Dump qw/dump/;
=head1 NAME
Custom Record class for A3C
=head1 METHODS
=head2 load_or_create
Perform canonicalization on C<load_or_create> and loads subset of columns
(which hopfully are indexes in model for performance reasons).
=cut
sub load_or_create {
my $class = shift;
my $self;
if ( ref($class) ) {
( $self, $class ) = ( $class, undef );
} else {
$self = $class->new();
}
my %args = (@_);
foreach my $key ( keys %args ) {
$args{$key} = $self->run_canonicalization_for_column(
column => $key,
value => $args{$key}
);
}
my %load_cols;
if ( ref($self) eq Jifty->app_class('Model','Person') ) {
$load_cols{$_} = $args{$_} foreach ( qw/
uid
hrEduPersonUniqueID
mail
/ );
} else {
%load_cols = %args;
}
my ( $id, $msg ) = $self->load_by_cols(%load_cols);
unless ( $self->id ) {
return $self->create(%args);
}
return ( $self->id, $msg );
}
=head2 create
Serialize ARRAY values into single scalar separated by magic C<< <*> >> marker
=cut
sub create {
#warn "# create",dump(@_);
my $self = shift;
my %data = @_ or die "no data?";
foreach my $col ( keys %data ) {
#warn "## ref($col)=",ref($col);
$data{$col} = join(' <*> ', @{$data{$col}}) if ref( $data{$col} ) eq 'ARRAY';
}
#warn "## data = ",dump( %data );
$self->SUPER::create( %data );
}
1;