如何在数据库中获取 BigDecimal 值并使其在视图中易于阅读

Ric*_*wis 2 ruby bigdecimal ruby-on-rails-4

我想显示产品的价格,并了解到使用小数比整数或使用浮点数可靠得多。

我想知道如何在存储时从数据库中提取实际数字 17.99 <BigDecimal:646c8b8,'0.2E2',9(18)。我需要以表格形式显示这个值。

到目前为止我有:

f.input :image_prices, as: :check_boxes
Run Code Online (Sandbox Code Playgroud)

在我看来,这将输出:

#<IMAGEPRICE:0X007F0431BB0850>
#<IMAGEPRICE:0X007F0431BB0710>
#<IMAGEPRICE:0X007F0431BB05D0>
#<IMAGEPRICE:0X007F0431BB0490>
Run Code Online (Sandbox Code Playgroud)

但是保存时会存储正确的 ID。模型关系如下:

class Image < ActiveRecord::Base
  has_many :image_options, dependent: :destroy
  has_many :image_prices, through: :image_options
end

class ImageOption < ActiveRecord::Base
  belongs_to :image_price
  belongs_to :image
end

class ImagePrice < ActiveRecord::Base
  has_many :image_options
  has_many :images, through: :image_options
end
Run Code Online (Sandbox Code Playgroud)

我现在很困惑,已经尝试了 3 个小时了,但没有成功。

eug*_*gen 5

如果唯一的问题是复选框列表中显示的图像价格为#<IMAGEPRICE:0X007F0431BB0850>,只需在模型to_s中定义一个方法ImagePrice并让它返回价格的字符串表示形式。例如,如果该价格的小数值存储在price属性中,您的方法将类似于

class ImagePrice < ActiveRecord::Base
  # ...
  def to_s
    price.to_s
  end
end
Run Code Online (Sandbox Code Playgroud)