It's hard to say what a less-beginner friendly way might be. It just depends on what your requirements are. What I mentioned above is just the simplest thing that came to mind to handle the basic requirements of this kind of game. And, really, there's nothing wrong with simple if it gets the job done.
For this game, it seems that the "eat or be eaten" logic is purely "size" based. In that case, the scale is a reasonable way to make that decision. However, that only works if you're using the same "base" size for all of the fish. If you were to create different kinds of fish, you might make their sprites larger or smaller by default - outside of the scale value. In that case, two fish of differing "visual" sizes might both have a scale value of 1. So, in that case, scale comparison would no longer work for the main decision and you'd have to devise some other method.
That could be a simple as adding a property to the script attached to each fish that contains a value that somehow represents "size" without involving the actual scale
property. In that case, the logic would be similar, but you'd just use a different value for comparison.
Regarding having several enemy nodes... Again, that depends on the expectations. Doing so would allow you to easily create fish that look different, and potentially even have differing behaviors based on their attached scripts.
Again, it's all a matter of what you're trying to achieve.
If you get stuck trying to work through the basics, feel free to post some relevant code for some additional input from the community.