我在@results
中有两种对象(即@results = @videos + @artists
)。
我正在尝试做,伪代码:
@results.map(&:title || &:first_name)
视频有标题栏,但艺术家没有。我该如何工作?
我可以进入每个循环,但寻找更好的方法来解决这个问题。
答案 0 :(得分:2)
我没有尝试找到正确的方法,而是创建了一个可以从任何地方调用的通用接口。
示例(我使用名为"名称"的方法,但您可以选择其他名称):
Video类将具有" name"方法,像这样:
class Video
def name
self.title
end
end
使用Artist类,我也会这样做,但使用" first_name"方法:
class Artist
def name
self.first_name
end
end
他们,您可以在地图块上使用相同的方法(名称):
@results.map(&:name)
答案 1 :(得分:-1)
@results.map{|x|
x.title if x.respond_to?('title')
x.first_name if x.respond_to?('first_name')
}