ruby - 如何在数据库中获取 BigDecimal 值并使其在 View 中易于阅读

标签 ruby ruby-on-rails-4 bigdecimal

我想显示产品的价格,并了解到使用 Decimal 比 Integer 或使用 Floats 更可靠。

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

到目前为止我已经:

f.input :image_prices, as: :check_boxes

在我看来这将输出:

#<IMAGEPRICE:0X007F0431BB0850>
#<IMAGEPRICE:0X007F0431BB0710>
#<IMAGEPRICE:0X007F0431BB05D0>
#<IMAGEPRICE:0X007F0431BB0490>

但是保存时会存储正确的 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

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

最佳答案

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

class ImagePrice < ActiveRecord::Base
  # ...
  def to_s
    price.to_s
  end
end

关于ruby - 如何在数据库中获取 BigDecimal 值并使其在 View 中易于阅读,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34317538/

相关文章:

ios - (Rubymotion) 如何在 Formotion 中执行此自定义 View ?

ruby-on-rails - 有没有办法为 CarrierWave/Fog 设置上传进度指示器?

ruby - Ruby 中系统对象和小整数的固定对象 ID

ruby-on-rails-4 - 使用 Ruby on Rails 以编程方式填写现有的可填写 PDF 文件

java - 如何使用 Java-8 Streams 将 n 维数组映射到另一种类型?

ruby - 使用 Ruby 从二进制字符串中解压一点

ruby-on-rails - Heroku 上的多模式 Postgres

ruby-on-rails - rails 4 和活跃的管理员

java - 如何在 BigDecimal 上使用 >、=、< 等比较运算符

java - 在 BigDecimal 中查找有效数字位数的好方法?