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

时间:2015-08-09 12:06:28

标签: ruby-on-rails methods undefined

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

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

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

然后我从数组

中的符号中得到未定义的方法错误

如何避免此错误。而不是错误处理,只有select方法的一些设置。

1 个答案:

答案 0 :(得分:1)

您可以使用respond_to?方法

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

或者您可以使用try。如果对象没有响应方法,则返回nil,否则调用该方法。

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