CustomFieldをsave()するとき、CustomField::validate_default_value() から CustomValue::validates() を経由してこの CustomValue::validate_value_regexp() が呼ばれますが、ここで $this->CustomField->read() することで、呼び出し元の CustomField の $data も更新されてしまい、更新内容がとんでしまうようです。

なので、read() 前後で $this->CustomField->data をバックアップしてリストアするようにしてみました。