How to create a colorful gradient shader?
I'd suggest to try using Layer Weight or Fresnel node in this case and add color to it using Color Ramp node. Also you may add more colors using Texture Coordinates separate outputs as masks and rotating, scaling and moving them using Mapping node. Also I'd suggest to use Emission shader instead or together with Diffuse and other shaders. This will give you more individual controls over your objects and make them more independent from the overall scene lighting. If you want the texture to be static, not dinamically changed depending on the camera view angle, you may UV-unwrap the model and bake emission from the Bake tab in Cycles render properties to use the result as the texture for emission color later on.