未定义的方法错误 - Rails - 迭代时忽略

Undefined method error - Rails - Ignoring while iterating

我有一个包含以下对象的数组 1. 模型对象——即 Tale(id: integer .....) 2.符号 3. Activerecord 对象(模型的实例)

我需要定期 select 数组中的不同对象组。我希望能够应用特定于某个组的方法,而忽略其他组的未定义方法。这不直观吗?响应该方法然后满足条件的任何人都是合适的人选。 例如,如果我有

  array.select {|element| element.superclass == ActiveRecord::Base}

然后我从数组中可能存在的符号中得到未定义的方法错误

我怎样才能避免这个错误。除了错误处理之外,还有一些针对 select 方法的设置。

你可以使用respond_to?方法

array.select {|el| el.respond_to?(:superclass) && el.superclass == ActiveRecord::Base}

或者您可以使用 try。它 returns nil 如果对象不响应方法或调用该方法。

array.select {|el| el.try(:superclass) == ActiveRecord::Base}