How can I enable and disable a complex gameobject?

I created a empty gameobject and added a model to it. How can I disable the entire game object including its child model? I tried active and enabled on the root gameobject, but it didn't seem to have any effect. I want to hide the model until it is needed.

GameObject.SetActiveRecursively might be what you're looking for.

However, if you only want to hide the model, rather than deactivate it, you could always just turn off the Renderer of the child object(s). This would mean your GameObject's scripts would still receive Update events and other Unity events.

If there are many child objects, and you want to turn the renderer off on all of them, you could use this. This would also work for a single child object.

var renderers = GetComponentsInChildren(Renderer);
for (var r : Renderer in renderers) {
    r.enabled = false;
}

If you want to turn on/off only specific children of an object, based on a particular tag, you can just check the ".tag" property of the renderer reference (this gives you the tag of the GameObject to which the renderer is attached). For example, this would turn off the renderer of all child gameobjects tagged "JetGlow":

var renderers = GetComponentsInChildren(Renderer);
for (var r : Renderer in renderers) {
    if (r.CompareTag("JetGlow")) {
        r.enabled = false;
    }
}

Little Update:

As for Unity4 SetActiveRecursively is outdated and replaced by

obj.SetActive(true);

If you still use a previous version, refer to the other answer.