Nope, you've got it. Use index_by when each hash key only has one value, use group_by when there are mutliples. Here are two examples:
@users = User.find(:all).index_by { |u| u.id } @users[5] # => <User...>
@events = Event.find(:all).group_by { |e| e.created_at.to_date } @events[Date.today] #=> [<Event>, <Event>, ...]