checking is_new_record first to prevent unnecessary validation