num
数値を受け取り、通貨(親レコードモデルの属性)を決定し、数値に変換係数を掛けた値を返すccyというメソッドを定義しました。この場合、Selfは、独自の属性をいくつか持ち、Recordに属する設定を指します。この方法は、以下の設定モデルで定義されています。
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
がゼロであることがわかったためです。したがって、たとえばRailsアプリケーションのようなことをしようとするとself.ccy(100)
、次のエラーが発生します。
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要素で何らかの演算子を使用している場合:
TypeError: nil can't be coerced into Fixnum
私は少しの間オンラインを見回しました、そして私はこれを修正する方法を正確に理解することができないようです。感謝します!