我正在使用谷歌驱动器api,我从谷歌驱动器API获取文件对象。 现在该文件可能/可能没有downloadLink和webContentLink,具体取决于用户验证文件。 现在我有这些方法
download_links[index][1] = i.webContentLink if i.responds_to? :webContentLink
现在它表示没有为i定义responds_to。
现在我是一个远程对象,所以我不能改变它的实现并添加method_missing或responds_to方法。 so 如何检查i.webContentLink是否是该第i个对象中的有效方法。
答案 0 :(得分:4)
这里有两件事。
首先,#responds_to?
确实不存在,任何地方:)您要使用的正确方法名称为#respond_to?
。
其次,这不是一个ruby方法,因为你要求它,但我提到它,因为你在rails标签上发布ruby问题。来自rails的ActiveSupport实现了#try
方法来实现这一目标。
如果存在,则返回方法的结果,或者返回nil:
download_links[index][1] = i.try( :webContentLink )
请务必不要滥用它,因为它会很快导致难以理解的代码(在某些时候,您需要了解NullObjects)。