在方法中传递活动记录属性

Pass active record attributes in a method

我有一个方法,它采用 rails 个活动记录对象数组,并根据传递给该方法的第二个参数对这些记录进行排序。该方法类似于:

def sort_provider(providers, attr)
  provider.sort!(|a,b| a."#{attr}" <=> b."#{attr}")
end

当我调用方法 sort_providers(providers, "name") 时,我得到一个 unexpected tSTRING_BEG, expecting '('

如何获取根据传入的第二个参数对数组进行排序的方法?

尝试使用send

providers.sort_by! { |a, b| a.send(attr) <=> b.send(attr) }

如果attr是一个符号:

providers.sort_by(&attr)