在我的 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/