ruby-on-rails - 以千为单位的 Rails 数量被截断

标签 ruby-on-rails json ruby

在我的 Rails 5 应用程序中,我阅读了产品提要。在 JSON 中,当价格超过 $1,000 时,JSON 中有一个逗号,例如 1,000。

我的代码似乎截断了它,所以它存储为 1 而不是 1,000。

所有其他字段都正确存储。有人可以告诉我我做错了什么吗?

在此示例中,reg_price 保存为 2,而不是 2590。

json 示例(用于 reg_price 字段):

[
  {
    "reg_price": "2,590"
  }
]

架构

create_table "products", force: :cascade do |t|
  t.decimal  "reg_price",                           precision: 10, scale: 2
end

模型

response = open_url(url_string).to_s
products = JSON.parse(response)

products.each do |product|
  product = Product.new(
    reg_price: item['reg_price']
  )
  product.save
end

最佳答案

你没有做错任何事。小数不适用于逗号分隔符。我不确定是否有解决问题的好方法。但作为一种选择,您可以定义一个虚拟属性:

def reg_price=(reg_price)
  self[:reg_price] = reg_price.gsub(',', '')
end

关于ruby-on-rails - 以千为单位的 Rails 数量被截断,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45949749/

相关文章:

ruby-on-rails - rails : has_many through between two models and also a has_many/belongs to on the same models

ruby-on-rails - Gemfile.lock 应该致力于 Windows 上的源代码管理吗?

ruby-on-rails - Ruby on Rails Devise——编辑配置文件后重定向

javascript - 为什么 JSON 是 JavaScript 的子集?

javascript - 用以前的值填充时间序列数据数组 - Javascript

ruby-on-rails - 编码或序列化 ActiveRecord 对象

ruby-on-rails - 如何在 Docker 中运行 Rails? PG::ConnectionBad 无法将主机名 "pg"转换为地址:没有与主机名关联的地址

php - 处理传入 JSONObject 的字符串

ruby - Sublime Text 3 无法识别 ruby​​ 中的 %i

ruby - 在 EC2 上安装 Ruby 1.9.3 或更高版本 - Ubuntu