一意制約名の指定に挫折しました。

CatalystのSELECT系の処理で例えばfind_or_newの場合、プライマリキー以外の一意制約の場合、第二引数に一意制約名を指定してあげないと検索してくれない。例えばユニークキーの時、shushokuがプライマリキー、mainがユニークの時

    my $rs = $self->{Schema}->resultset('Yushoku')->find_or_new({
              shushoku => 'Gohan',
              main => 'Niku',
              fuku => 'Sarad',
              drink => 'Ocha'});

としたら、shushokuで確認してSELECTしてくれる。
しかし、shushoku(プライマリーキー)を消してユニークキーで確認してほしい時は、第二引数を指定しなければならない。

ユニークキー:main_key

    my $rs = $self->{Schema}->resultset('Gohan')->find_or_new({
              main => 'Niku',
              fuku => 'Sarad',
              drink => 'Ocha'},{key => 'main_key'});

しかし、結果は'Unknown unique constraint main_key on \'Yuushoku\''となって指定できないよう。
find('Niku',{ key => 'main_key'})とかでも駄目で、ユニークキーの指定をcatalyst側からできてないよう。
add_unique_constraintを使わないといけないんだけど、面倒くさくなって、

    my $rr = $self->{Schema}->resultset('User')->find({main => 'Niku'});
    if($rr){return;}else{
    my $rs = $self->{Schema}->resultset('Gohan')->find_or_new({
              main => 'Niku',
              fuku => 'Sarad',
              drink => 'Ocha'});
    }

として第二引数を使わないようにした。ただどう考えても冗長だなあ。find_or_newとか使えなくて悔しい。

参考にしたサイト&本

PerlフレームワークCatalyst完全入門

PerlフレームワークCatalyst完全入門

add_unique_constraintでゆこう - Hatena::Diary::Neko::kak 500 Internal Server Error
CatalystでFormValidator::Simple::AutoでDBIC_UNIQUE使う場合 - libnitsuji.so