未定义的方法错误 - 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}
我有一个包含以下对象的数组 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}