/** * If there is a new value in promo_code_text, try to load promo_code object. * If the new value is NULL, remove it * @param Model_Purchase $purchase */ public function model_after_check(Model_Purchase $purchase) { if ($purchase->changed('promo_code_text') and !$purchase->errors('promo_code_text')) { if ($purchase->promo_code_text) { $purchase->promo_code = Jam::find('promo_code', $purchase->promo_code_text); } else { $purchase->promo_code = NULL; } } }