状況
Categoryモデルへの外部参照があるFoodモデルを利用するコントローラーにおいて、
Foodに項目を新規登録しようとすると、
Call to a member function find() on a non-object
という旨のエラーがあり、対象のコードを見ると、
$categories = $this->Food->Category->find('list');
に問題ありとのこと。
ミス内容
このコントローラー(FoodsControler.php)は利用モデルが明示されていなかった。
解決方法
public $uses = array('Food', 'Category');
を明記し、
$categories = $this->Category->find('list');
と訂正したところ、新規登録時のフォーム生成に成功した。
反省
コントローラーで利用するモデルは必ずpublicな$usesプロパティで指定すること。
参照側の記述方法に注意すること。
でなければ、
$this->Category
のように参照などできるはずがなかったのだ。