2015-10-07 2 views
0

У меня есть модель рельсов под названием ExpenseRatio. Я пытаюсь получить доступ к определенной записи в модели и значение для ее поля, называемое calc_expense_ratio (это десятичное число в базе данных).Атрибут модели Rails, отображающий как символ

xr = ExpenseRatio.find(xr_id) 

    @po = MyAPI.ViewPO(po_id) 

    items = Array.new 
    @po["PurchaseOrderLineItems"].each do |lip| 
     lip.each do |li| 
      if li["id"].to_i > 0 
       new_price = xr.calculated_expense_ratio * li["price"] 
       items.push([id: li["id"].to_i,iprice: li["price"], xrid: xr_id, price: new_price,xrv: xr.calculated_expense_ratio]) 
      end 
     end 
    end 

Это все код внутри внешнего модуля в папке lib. Xr.calculated_expense_ratio не выводится фактическое значение десятичного в записи, а то, что выглядит как полный на символ похож на это:

#<BigDecimal:7f9883d1cd38,'0.42E1',18(45)> 

Любая идея, почему это?

ответ

1

Это не символ, это объект BigDecimal. Я предполагаю, что вы используете MySQL в качестве своей базы данных, а ваш столбец имеет тип DECIMAL. BigDecimal - это рубиновый объект, аналогичный float, но допускающий большую точность. См. Следующее:

http://makandracards.com/makandra/1178-bigdecimal-arithmetic-in-ruby

+0

Спасибо. Но как я могу заставить его показать значение объекта BigDecimal? Кажется, у меня нет этой проблемы с моими другими атрибутами ... –

+0

Попробуйте метод 'to_s': http://ruby-doc.org/stdlib-2.0.0/libdoc/bigdecimal/rdoc/BigDecimal. HTML # метод-я-to_s –

Смежные вопросы