MoFedge::Data::DBIC::Schemaのauto_blogns_to

http://d.hatena.ne.jp/lestrrat/20060815#1155614343

Loaderはリレーションのかけかたが微妙だったので、
(前にちょっと試しただけで、そうでもないかもしれませんが)
自前でやるようにしました。ただそれだけで、たいした意味はありませぬ。
MoFedge::Data::CDBIもLoaderつかってないので、それにあわせた感じです。
ついでなので。
こんな感じでリレーション設定してまふ。


sub _auto_belongs_to {
my $self = shift;
my $column = shift;
my $col = shift;
my $base = shift || '';

if ($col =~ /([^_]+)$/) {
my $pkg = $self->base_name . "::Schema::" . ucfirst($1) . $base;
if ($pkg->require) {
$self->belongs_to($column => $pkg);
} else {
$base = ucfirst($1) . $base;
if ($col =~ /(.*)_([^_]+)$/) {
$self->_auto_belongs_to($column, $1, $base);
}
}
}
}

sub register_column {
my ($self, $col) = @_;
$self->next::method($col);

if ( $col =~ /^(.+)_id$/ ) {
$self->_auto_belongs_to($col,$1);
}
}

弊社DBの構成に特化した形でのリレーション設定となっております。
(言うほどのものでもありませんが。)

MoFedge::Data::DBIC::Schemaは弊社でもまだつかわれておりません^^;
KittenのMoFedge版で使ってますが途中。