I have a class called Note, which includes an instance variable called time_spent. I want to be able to do something like this:
current_user.notes.inject{|total_time_spent,note| total_time_spent + note.time_spent}
Is this possible by mixing in the Enumerable module? I know you are supposed to do add include Enumerable to the class and then define an each method, but should the each method be a class or instance method? What goes in the each method?
I’m using Ruby 1.9.2
It’s easy, just include the
Enumerablemodule and define aneachinstance method, which more often than not will just use some other class’seachmethod. Here’s a really simplified example:For further info, I recommend the following article: Ruby Enumerable Magic: The Basics.
In the context of your question, if what you expose through an accessor already is a collection, you probably don’t need to bother with including
Enumerable.