Я определил метод ccy, который принимает число num
, определяет валюту (атрибут родительской модели записи) и возвращает число, умноженное на коэффициент преобразования.Self в данном случае относится к настройке, которая имеет ряд собственных атрибутов и принадлежит записи.Метод определен в модели настроек ниже:
class Setting < ActiveRecord::Base
belongs_to :record
def ccy(num)
self.record.currency == "USD" ? ( num * 1 ) :
self.record.currency == "GBP" ? ( num * 0.616181 ) :
self.record.currency == "EUR" ? ( num * 0.70618 ) :
self.record.currency == "CAD" ? ( num * 0.97415 ) : nil
end
end
Однако это не работает, потому что после некоторых тестов я обнаружил, что self.record.currency
равен нулю.Поэтому, когда я пытаюсь сделать что-то вроде self.ccy(100)
в приложении rails, например, я получаю следующую ошибку:
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.*
или это, если я использую какой-то оператор наnil element:
TypeError: nil can't be coerced into Fixnum
Я немного заглянул в онлайн и не могу понять, как это исправить.Помощь оценена!