Is this the correct and safest way to update / save a new record?
It is definitely a way to save record. :)

You might want to be more explicit with validation, though.  i.e.

if ($record-&gt;validate())
{
    // Save record
    if ($record-&gt;save(false))
    {
        // Populate id
        if($isNewGoal)
        {
            $model-&gt;id = $record-&gt;id;
        }

        return true;
    }
    else
    {
        return false;
    }
}
else
{
    $model-&gt;addErrors($record-&gt;getErrors());
}