Rotate an Object while moving without affecting Movement Direction

Hi , i want to rotate an moving object , its not happening for me as i desire, its either rotating around one position or going like a boomerang, all i want is constant rotation while moving, will attach the code below.

[SerializeField] private float _moveSpeed;
[SerializeField] private Vector3 _rotation;
[SerializeField] private float _rotateSpeed;

void FixedUpdate()
{
    /*transform.Rotate(_rotation * _rotateSpeed * Time.deltaTime);
    *//*if(transform.position.x >=0 || transform.position.x <= 0)
    {
        transform.position = new Vector3(0, transform.position.y, 0);
    }*/
    transform.Translate(Vector3.forward * _moveSpeed * Time.deltaTime);
}

If i enable transform.rotate it changes the direction, if i comment movement while spinning, it spins around. if i enable the if condition, it goes like a boomerang.

@DrEnchanter just make it a child of an empty game object, rotate the object and move the empty game object forward

Try
transform.Rotate(_rotation * _rotateSpeed * Time.deltaTime, Space.Self);
or Space.World.
see Unity - Scripting API: Transform.Rotate