Найти значение в хэше Ruby - PullRequest
0 голосов
/ 02 октября 2018

У меня есть этот хэш Ruby, который я использую для получения предельных сумм:

AMOUNT_LIMITS_FOR_TRX_TYPE = {
    zimpler: {
      eur: { min: 3_50,     max: 15_00_00 },
      sek: { min: 35_00,    max: 15_000_00 }
    },
    qiwi: {
      eur: { min: 5_00,     max: 350_00 },
      usd: { min: 5_00,     max: 500_00 },
      rub: { min: 500_00,   max: 15_000_00 },
      kzt: { min: 500_00,   max: 74_300_00 }
    },
    payu: {
      czk: { min: 1,        max: 1_000_000_00 },
      pln: { min: 1,        max: 1_000_000_00 }
    }
}.freeze

def amount_for(transaction_type, currency)
    p transaction_type
    p currency
    min_amount = AMOUNT_LIMITS_FOR_TRX_TYPE[transaction_type.to_sym][currency.to_sym][:min]
    max_amount = AMOUNT_LIMITS_FOR_TRX_TYPE[transaction_type.to_sym][currency.to_sym][:max]
    rand(min_amount..max_amount)
  end

Я называю метод amount_for с параметрами: :zimpler и "SEK" и получаю ошибку:

checks.rb:31:in `execute': undefined method `[]' for nil:NilClass (RuntimeError)
/models/request_builders/request_builder.rb:246:in `amount_for'

Знаете ли вы, где моя ошибка и как ее исправить?

1 Ответ

0 голосов
/ 02 октября 2018

Вы передаете "SEK" в качестве аргумента currency и затем пытаетесь получить доступ к хэш-значению с помощью:

currency.to_sym

Но он возвращает :SEK вместо :sek.Возможно, вам нужно исправить это на:

currency.downcase.to_sym
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...