Wrap text
# in extension lib/ranged_hash.rb
class RangedHash
def initialize(hash)
@ranges = hash
end
def [](key)
@ranges.each do |range, value|
return value if range.include?(key)
end
nil
end
end
# in config/environment.rb
SHIPPING_RATES = RangedHash.new(
(0.00..14.99) => {'std' => 9.95, 'pry' => 15.90, 'sat' => 19.95},
(15.00..33.99) => {'std' => 12.95, 'pry' => 18.90, 'sat' => 22.95},
(34.00..38.99) => {'std' => 13.95, 'pry' => 19.90, 'sat' => 23.95},
(39.00..45.99) => {'std' => 14.95, 'pry' => 20.90, 'sat' => 24.95},
(46.00..55.99) => {'std' => 15.95, 'pry' => 21.90, 'sat' => 25.95},
(56.00..58.99) => {'std' => 16.95, 'pry' => 22.90, 'sat' => 26.95},
(59.00..68.99) => {'std' => 18.95, 'pry' => 24.90, 'sat' => 28.95},
(69.00..84.99) => {'std' => 20.95, 'pry' => 26.90, 'sat' => 30.95},
(85.00..10000) => {'std' => 37.95, 'pry' => 43.90, 'sat' => 47.95}
)
#Use like this
ship_method = 'std'
price = 12.15
shipping_rate = SHIPPING_RATE[price][ship_method] # returns 9.95
ship_method = 'pry'
price = 47.32
shipping_rate = SHIPPING_RATE[price][ship_method] # returns 21.90