Catalyst::Plugin::FormValidator::Simple::AutoでマルチカラムのUNIQUEチェックをする場合
昨日に引き続き今日もまた躓いています。
FormValidator::Simple::Plugin::DBIC::Uniqueでマルチカラムのユニークチェックをしたい。
たとえば「このID(自分自身)以外で名前が重複するカラムがあるか?」みたいなチェックをするためには
SELECT COUNT(*) FROM table WHERE id != ? AND name = ?
みたいなSQLが必要で、それをやるためには、
# check multiple columns including '!=' check # set "!" as prefix for key-name FormValidator::Simple->check( $q => [ { unique => [qw/id name email/] } => [ [qw/DBIC_UNIQUE Table !id name mail/] ] ] );
みたいにする。
例によってこの設定をYAMLに書きたいわけですが書き方がわかりません。
試しに以下のようなコードを試してみた。
#!/usr/bin/perl use strict; use warnings; use YAML; use Data::Dumper; my $data = YAML::Load(<<'END_OF_YAML' --- {unique: ['id', 'name']}: - ['DBIC_UNIQUE', '__c_model(DBIC::Category)__', '!id', 'name'] END_OF_YAML ); my ($key_hash) = keys %$data; print "key is not hash!\n" unless ref $key_hash eq 'HASH'; print Dumper $data;
結果はこれ。
key is not hash! $VAR1 = { 'HASH(0x8599f14)' => [ [ 'DBIC_UNIQUE', '__c_model(DBIC::Category)__', '!id', 'name' ] ] };
キーの部分が文字列になってしまっています。
ハッシュはキーにできないのかなあ。
-
- -
http://yaml.org/spec/current.html
YAML - YAML Ain't Markup Language (tm) - metacpan.org
-
- -
更新してないのに何度もフィードが更新されてきていい加減うざいんでちょっと変更しました(上のリンクの部分)。