Why is this method protected? (from agile book)

I think the response is twofold. As for AWDRv2, I think the point of
the chapter is to demonstrate the different ways that validation can
be added to a model. The first dozen or so chapters are dedicated to
a somewhat real world example. Take them for what they are, realizing
that you might want to do things differently.

As for your specific question, "validate" is a protected method of
ActiveRecord::Base. If you want to extend it (the point of the AWDR
example) then you've got to implement the full signature of the
method, including it's 'protectedness'.

HTH,
AndyV

Because it never should be called from outside the context of the model.

Regards

Dave Thomas