ruby on rails -如何基于对象进行映射



我在@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')
}

相关内容

  • 没有找到相关文章

最新更新