Ruby: добавьте объект в конце массива
-
26-10-2019 - |
Вопрос
У меня есть два объекта @Tracks (перечисляемый) и @Artist, и я хотел бы создать перечисление со всеми треками и художником в них. Это так, что я могу передать их методу, который будет делать (каждый трек, и у художника есть события изменения):
change_events = object.map(&:change_events).flatten
Моя идея была:
objects = @artist.tracks
objects << @artist
Но это дает мне эту ошибку для второй строки (что имеет смысл, но я не знаю, как исправить):
Track(#17816) expected, got Artist(#17572)
Любые идеи о том, как я могу это сделать, будут оценены!
Решение
Эта (ошибка) сигнализирует, что она (возвращаемое значение @artist.tracks
)-это не массив, с которым вы имеете дело, а некоторый тип данных, специфичный для рельсов. Вы могли бы попробовать
objects = @artist.tracks.to_a
objects << @artist
Но использование неоднородных значений в массиве часто не очень хорошо, если все они реагируют на нужный метод, который вам нужен, вы должны быть хорошими.