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メソッドを書かなくていいのはかなりイイです。