動的ファインダを使う

2008/11/06

AkelosのActiveRecordは、標準では動的ファインダが使えませんが、プラグインが提供されている。

動的ファインダとは、
user = User.find_by_email(params[:email])

といったメソッド名だけでemailカラムにwhereしてくれるアレです。
Rails触ったときに「すげー」と思ったので、ぜひAkelosでも使いたいなと思っておりました。

Akelosでは、標準では動的ファインダが使えませんが、Akelosのプラグインのページに「dynamic_finder」なるものがあります。
これを、
> php script/plugin install dynamic_finder

でインストール。
あとは、ActiveRecordのfindメソッドに"_by_hoge"をつけてあげる。
$this->post =& $this->Post->find_by_id($this->params['id']);

検索結果が複数件なら、findAllメソッドに対してつけてあげます。
$this->comments =& $this->Comment->findAll_by_article_id($this->params['id'], array("order" => "id"));


しかけとしては、app/shared_model.phpに__callメソッド(PHPでmethod missingなときに呼ばれるメソッド)にメソッド名を解析してうまいことやる処理が追加されているようです。
見てみると、findOrCreateBy~なんかもあるので、検索結果がない場合にレコード登録する動的ファインダも使えそうです。

あと、dynamic_finderプラグインはPHP5じゃないと使えません。
レンタルサーバーで使うならPHPのバージョンに注意。

PHP and Akelos | コメント(0) | トラックバック(0)
トラックバック
トラックバックURL:
コメントをどうぞ
名前 (入力しなければ「通りすがり」):

メールアドレス (入力しても公開されません):

URL (入力すればリンクが張られます):


コメント:

(コメントにタグなどを使ってもタグがそのままが表示されます)