refactor has_many enumerable methods