<br /> package MySchema;<br /> use strict;<br /> use base qw(DBIx::Class::Schema::Loader);</p> <p> __PACKAGE__->loader_options(...);</p> <p> sub connection {<br /> my $class = shift;<br /> my $schema = $class->SUPER::connection(@_);<br /> my $classes = $schema->loader->classes;</p> <p> while (my($table, $schema_class) = each %$classes) {<br /> foreach my $column ($schema_class->columns) {<br /> # do something with $column<br /> }<br /> }<br /> $schema;<br /> }<br />
俺の場合、ただ"_on"で終わるカラムを全てDateTimeにしたかったので、
<br /> package MySchema::Base;<br /> use strict;</p> <p> sub has_datetime {<br /> my $class = shift;<br /> foreach my $column (@_) {<br /> $class->inflate_column($column, {<br /> inflate => sub { DateTime::format::Pg->parse_datetime(shift) },<br /> deflate => sub { DateTime::format::Pg->format_datetime(shift) },<br /> });<br /> }<br /> }</p> <p> package MySchema;</p> <p> __PACKAGE__->loader_options(..., additiona_base_classes => [ qw(MySchema::Base) ], ...);<br />
で、さっきの"do something with..."のところで
<br /> while (my($table, $schema_class) = each %$classes) {<br /> $schema_class->has_datetime(grep { /_on$/ } $schema_class->columns);<br /> }<br />
ディモォォォォルトッ
カテゴリ
開発トラックバック(0)
このブログ記事に対するトラックバックURL: http://mt.endeworks.jp/cgi-bin/mt-tb.cgi/1148


コメントする