Hello,
First, Your model is really fantastic, nice work
This is not a very good solution, there’s at least one better solution using a follow-path constraint, but I don’t fully understand how it works.
Maybe this could make you better “understand” the use of constraints . . . as well as the different “approaches/possibilities” given by the other contributors of the post .