Ruby on rails 使用字符串时重构大小写

Ruby on rails 使用字符串时重构大小写,ruby-on-rails,refactoring,Ruby On Rails,Refactoring,我的控制器中有许多: def ups @ups ||= Shipper::Ups.new( ENV['UPS_ACCESS_KEY'], ENV['UPS_PASSWORD'], ENV['UPS_USERNAME'], ENV['UPS_ACCOUNT'] ) end 然后我有一个块被调用: def type(number, carrier) case carrier.slug when 'ups' number_details = u

我的控制器中有许多:

def ups
  @ups ||= Shipper::Ups.new(
    ENV['UPS_ACCESS_KEY'],
    ENV['UPS_PASSWORD'],
    ENV['UPS_USERNAME'],
    ENV['UPS_ACCOUNT']
  )
end
然后我有一个块被调用:

def type(number, carrier)
  case carrier.slug
  when 'ups'
    number_details = ups.track(number)
  when 'fedex'
    number_details = fedex.track(number)
  when 'usps'
    number_details = usps.track(number)
  end

  return number_details
end
但是,如果我可以使用
carrier.slug
并将其预先添加到
ups.track(number)
这样的行中,我似乎可以对其进行重构


有没有办法做到这一点?

您可以使用
send
来做到这一点,但在此之前,我们需要确保您拥有正确的载波段塞

if %w[ups fedex usps].include?(carrier.slug)
  send(carrier.slug).track(number)
end