Как получить доступ к элементу подуровня YAML во вложенной переменной? - PullRequest
0 голосов
/ 21 февраля 2011

Получение ошибки:

You have a nil object when you didn't expect it!
You might have expected an instance of Array.
The error occurred while evaluating nil.[]

APP_CONFIG загружаются нормально.

account_type = 'sample'
allowed = APP_CONFIG['account']["#{account_type}"]['highlight']

Ошибка указывает на строку разрешенных переменных.

Метод, который я сейчас пытаюсь использовать:

  def self.allow_highlight?(account)
    account_type = Account.find(account).active_pack # returning a string - OK
    logger.debug account_type.class # checked on console - OK
    allowed = APP_CONFIG['account']["#{account_type}"]['highlight'] # Error line
    if total_account_highlight > allowed
        false
    else
        true
    end
  end

Надеюсь, вы понимаете. Любые сомнения, пожалуйста, спросите меня.

Спасибо!

Ответы [ 2 ]

1 голос
/ 21 февраля 2011

Сначала я должен убедиться, что APP_CONFIG устанавливается в инициализаторе.

Во-вторых, эта ошибка возникнет, если APP_CONFIG или account_type равны nil, вы на самом деле устанавливаете account_type прямо перед этой строкой, как в вашем коде, или оно поступает откуда-то и на самом деле не содержит значения? Если account_type равен nil, пуст или содержит значение, которое не указано в вашем файле YAML, будет выдано сообщение об ошибке. Итак, вы должны проверить содержимое этих двух переменных.

ТАКЖЕ, если вы только что сделали APP_CONFIG в своих инициализаторах, обязательно перезапустите Rails, так как он обновляется только при инициализации сервера

0 голосов
/ 21 февраля 2011

account_type должно быть строкой:

 allowed = APP_CONFIG['account']["#{account_type.to_s}"]['highlight']

или

 allowed = APP_CONFIG['account']["#{account_type.class}"]['highlight']
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...