我在@results
(即@results = @videos + @artists
)中有两种对象。
我正在尝试做,伪代码:
@results.map(&:title || &:first_name)
视频有标题列,但艺术家没有。我该怎么做呢?
我可以进入each循环,但是我在寻找一个更好的方法。
我将创建一个可以从任何地方调用的公共接口,而不是试图找到正确的方法。
示例(我使用一个名为"name"的方法,但你可以选择另一个名称):
Video类将有"name"方法,如下所示:
class Video
def name
self.title
end
end
对于Artist类,我也会做同样的事情,但是使用"first_name"方法:
class Artist
def name
self.first_name
end
end
它们,你可以在地图块上使用相同的方法(name):
@results.map(&:name)
@results.map{|x|
x.title if x.respond_to?('title')
x.first_name if x.respond_to?('first_name')
}