合格しなければならない次のテストがあります。
def test_can_find_by_arbitrary_fields
assert @library.respond_to? :find_by_artist
assert !@library.respond_to?(:find_by_bitrate)
@library.add_song({ :artist => 'Green Day',
:name => 'American Idiot',
:bitrate => 192 })
assert @library.respond_to?(:find_by_bitrate)
end
どうすればいいのかわかりません。
私はやってみました:
def respond_to?(method)
if self.public_methods.include? method
true
elsif (method == :find_by_bitrate)
define_method :find_by_bitrate, ->(default = nrb) { @songs.select |a| a[:bitrate] == nrb }
false
else
false
end
しかし、「define_methodは未定義です」と書かれています。メソッドを定義するfind_by_bitrate
方法はありますか?