Я пытаюсь проверить выкупные кодыНеопределенный метод delete_if для NilClass
@redemption_codes = Account.where(:redeemed == false).map(&:redemption_code)
validates :code, inclusion: { in: @redemption_codes }
before_create :remove_code
def remove_code
@redeemed = Account.where(:redeemed == true).map(&:redemption_code)
@redemption_codes.delete_if{|code|@redeemed.include?(code)}
end
Если код уже погашен, я хочу, чтобы удалить его из массива, поэтому он больше не включается.
Здесь я получаю
Undefined method delete_if for nil:NilClass
Значение @redemption_codes является nil
Если я ввожу значение, которое не входит в массив, я получаю флэш сообщение об ошибке.
Когда я печатаю значение, включенное в массив, оно работает. Другими словами, он работает, если я прокомментирую метод remove_code
.
Проблема @redemption_codes
установлена в камне. Если значение обновлено с :redeemed = false
до :redeemed = true
, оно не исчезнет из массива.
Вот почему я попытался создать специальное сообщение проверки, но оно не сработало.
Справка приветствуется.
Код 'Account.where (: redeemed == false)' не имеет смысла. Синтаксис: 'Account.where (выкуплено: false)'. – ptd
Или, 'Account.where (: redeemed => false)'. Похоже, это может быть синтаксический неверный текст или опечатка со стороны OP. – lurker