It seemed to be the best way for me. You have to take them out about every three hours overnight in the first month, in my opinion, so they don't go in their crate and think that it is okay.
Still better than cleaning all the floors and rugs and chewed up items in the morning.
I never used a crate with my dogs at night. No matter what I tried, the crate was peed and pooped in (even though everyone swore a dog wouldn't use it's bed as a bathroom) and all they did was whine and cry and howl all night. Which is not a good mix with two young children in the house. I would gate the pup in the bedroom with me, set my alarm for every 2 hours, and take the dog out. Sometimes my husband would do it, sometimes I would do it, but it worked. As each month older they get, you can make them wait an extra hour. (For 2 months, let them out every 3 hours, for 3 months let them out every 4 hours) and so forth. It worked great for me. Sure, I had some messes, but just like baby proofing, I puppy proofed.
I always thought housetraining a puppy was easy. My previous 2 dogs were relatively easy & my son's pup was fully trained at 10 w/o. I did the usual with them, take outside after eating, drinking, waking up, playing & every hour in between. That was until I got Tilba. She was twice as old as the other 2. She's now 9.5 m/o & will still go in the house if she's not let out at the right time. She will go 2-3 weeks without an accident & then went inside 3 mornings in a row this week.