I'd prefer that you wrap the business logic of what makes a rating positive/neutral/negative into scopes on the ratings model.

So, something like `scope :positive, ->{ where(opinion: -1) }

If you do that, you could actually refactor this to be

ratings.send(opinion).count

Which would be super cool!