add_unique_constraintでゆこう

RDBMSではプライマリーキーになるカラム以外にユニークに
なるカラムってあるわけです。

弊社の場合ridというカラムが全てのテーブルにありまして、
それがユニークなカラムになっております。
ridには完全ランダムにユニークとなる値が入っております。

それを普通にDBIC経由で検索する場合


$self->model('User')->search({rid => 'JZJlS7Es48'})->first;

こんな感じでやるのがまあ、普通なんですが、
DBICではadd_unique_constraintなるものがあります。


__PACKAGE__->add_unique_constraint([qw/rid/])

ってな感じで設定しておいてやると、


$self->model('User')->find({rid => 'JZJlS7Es48'});

こんな感じでかけます。
firstメソッドを呼び出す必要がなくなります。
findメソッドは基本プライマリーキーを指定してRするときに使うのですが、
uniqueなキーのRでも使えます。

findメソッドの場合はsearchと異なり、メソッドを実行した段階で
SQLが実行されるので、遅延評価させたい場合などはsearchメソッドでやればいいです。

感想としては
firstメソッドを書かなくていいのはかなりイイです。