Ruby: добавить объект в конец массива - PullRequest
3 голосов
/ 27 января 2011

У меня есть два объекта @tracks (перечислимый) и @artist, и я хотел бы создать перечисляемый со всеми дорожками и исполнителем в них. Это сделано для того, чтобы я мог передать их методу, который будет выполнять (каждый трек и исполнитель имеют события изменения):

change_events = object.map(&:change_events).flatten

Моя идея была:

objects = @artist.tracks
objects << @artist

но это дает мне эту ошибку для второй строки (что имеет смысл, но я не знаю, как исправить):

Track(#17816) expected, got Artist(#17572)

Буду признателен за любые идеи о том, как я могу это сделать!

1 Ответ

6 голосов
/ 27 января 2011

Это (ошибка) означает, что это (возвращаемое значение @artist.tracks) не массив, с которым вы имеете дело, а какой-то тип данных, относящийся к рельсам.Вы можете попробовать

objects = @artist.tracks.to_a
objects << @artist

Но использование неоднородных значений в массиве часто не годится, если они все отвечают нужному вам методу, вы должны быть хороши.

...