<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

コメントする

筆者

daisuke - a.k.a. "lestrrat", Perl hacker at Livedoor Inc, Japan Perl Association 代表理事

このブログ記事について

このページは、Dが2006年8月11日 14:35に書いたブログ記事です。

ひとつ前のブログ記事は「きっとPerlな人しか面白くないんだろうな」です。

次のブログ記事は「早速買った」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

Powered by Movable Type 4.1