read() するとエラーがクリアされてしまう

主キーがあるときって、モデルの read() は便利ですよね?
でも注意が必要かもです。


データ更新の場合次のような構造になることが多いんですが、

public function edit($id = null)
{
    if (!empty($this->data)) {
         $this->Model->save($this->data);
    }

    $this->Model->read(null, $id);
    // $this->Model->find('first', array('conditions'=>array($this->Model->primaryKey=>$id)));
}

この場合に save() 時のバリデートでエラーがあった場合に
エラー内容をビューで表示しよう($form->error())と思ってもうまくいきません。
read() 時に $this->validationErrors = array(); でエラー情報がクリアされてしまうからです。
find() であればうまくいきます。指定が面倒になるんだけど。。。


データ取得系は find() に集約しているからそっち使えってことなのか?
ソースをみると $this->id を元にして取得する感じから set() で設定したデータを元にって場合なのか?
いや、$this->find() の使い方からみると find() 集約以前(V1.1?)の遺物な気がしてきた。。。


なので AppModel にこんなのがあるとちょっと幸せ。
引数の順序はこっちの方がいいと思うんだけど。$id は必須だし。。。

    public function myread($id, $fields = array())
    {
        $conditions = array(
            'conditions' => array($this->primaryKey => $id),
        );
        if (!empty($fields)) {
            $conditions['fields'] = $fields;
        }
        return $this->find('first', $conditions);
    }