It runs the full validations for the new type, and since update_attributes hasn't happened yet, they fail (eg. "Environment cannot be blank"). I tried to do something more clever:

    @host.becomes(new_type).update_attributes(params[:host])

Which _almost_ worked - the problem is that the query uses the expected type:

    AREL (0.6ms)  UPDATE "hosts" SET <snipped> "type" = 'Host::Discovered' WHERE "hosts"."type" = 'Host::Managed' AND "hosts"."id" = 116

So this is bad on two fronts - `becomes` has made the search query add `WHERE "hosts"."type" = 'Host::Managed'` and then it's setting the type back to `'Host::Discovered'` anyway.

As such, I have to set the type (which can't use becomes because of the validation errors), save the host, and then re-find `@host` before proceeding to update_attributes.