Ruby:将对象添加到数组末尾

3

我有两个对象@tracks(枚举)和@artist,我想创建一个包含所有歌曲和其中的艺术家的枚举。这样我就可以将它们传递给一个方法,该方法将对每个歌曲和艺术家进行更改事件:

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

我的想法是:

objects = @artist.tracks
objects << @artist

但是第二行代码出现了错误(这很正常,但我不知道如何解决):

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

任何关于如何实现这个的想法都会受到赞赏!

tracks是一个依赖表吗?例如,一个艺术家有很多tracks,或者在artist表上有一个tracks列的列表? - Jed Schneider
一个艺术家有很多音轨。Etarion的解决方案非常出色! - tiswas
@tiswas:artist.tracks 给你一个 Rails 关系(Rails Relation),使用 artist.tracks.all 将其转换为数组。 - Oblivious Sage
1个回答

6
这个错误提示表明你处理的不是一个数组,而是一些与Rails相关的数据类型,它来自@artist.tracks的返回值。你可以尝试:
objects = @artist.tracks.to_a
objects << @artist

但是,在数组中使用不均匀的值通常是不好的,如果它们都响应所需的方法,那么你应该没问题。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接