@results
(つまり)には 2 種類のオブジェクトがあります@results = @videos + @artists
。
私がやろうとしている、疑似コード:
@results.map(&:title || &:first_name)
ビデオにはタイトル列がありますが、アーティストにはありません。どうすればこれを機能させることができますか?
各ループに入ることができましたが、これについてもっと良い方法を探しています。
@results
(つまり)には 2 種類のオブジェクトがあります@results = @videos + @artists
。
私がやろうとしている、疑似コード:
@results.map(&:title || &:first_name)
ビデオにはタイトル列がありますが、アーティストにはありません。どうすればこれを機能させることができますか?
各ループに入ることができましたが、これについてもっと良い方法を探しています。
適切なメソッドを見つけようとする代わりに、どこからでも呼び出すことができる共通のインターフェイスを作成します。
例(「名前」という方法を使用していますが、別の名前を選択できます):
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)
@results.map{|x|
x.title if x.respond_to?('title')
x.first_name if x.respond_to?('first_name')
}