Completly disable/enable rigidbody at runtime

I have created this helper class, is this the best way of disabling and enabling a rigidbody at runtime?

	public class RigidbodyCopy 
	{
		float angularDrag;
		float mass;
		float drag;
		RigidbodyInterpolation interpolate;
		CollisionDetectionMode collisionDetectionMode;
		bool isKinematic;
		bool useGravity;

		public RigidbodyCopy(InteractableItem item) {
			var org = item.GetComponent<Rigidbody>();              
			mass = org.mass;
			drag = org.drag;
			interpolate = org.interpolation;
			collisionDetectionMode = org.collisionDetectionMode;
			angularDrag = org.angularDrag;
			isKinematic = org.isKinematic;
			useGravity = org.useGravity;
		}

		public Rigidbody CopyTo(InteractableItem item) {
			var rigidbody = item.gameObject.AddComponent<Rigidbody> ();

			rigidbody.mass = mass;
			rigidbody.drag = drag;
			rigidbody.interpolation = interpolate;
			rigidbody.collisionDetectionMode = collisionDetectionMode;
			rigidbody.angularDrag = angularDrag;
			rigidbody.isKinematic = isKinematic;
			rigidbody.useGravity = useGravity;
			return rigidbody;
		}
	}

Usde like

var copy = new RigidbodyCopy(item);
Destroy(item.GetComponent<Rigidbody>());

//Attach to other rigid body or whatever
parent.AttachChild(item);

//when decouple
copy.CopyTo(item),

In Unity 4.0+ rigidbody.active is deprecated and may no longer be available but you can do this:

rigidbody.detectionCollisions = false;