繁体   English   中英

如何在Rails yml固定装置中保持前导零?

[英]how to keep leading zeros in Rails yml fixtures?

我试图在Rails 4 beta1的“最小”测试中使用“ food_descriptions”固定装置:

butter:
 NDB_No:       "01001"
 FdGrp_Cd:     "0100"
 Long_Desc:    "Butter, salted"

我的测试是这样的:

it "must work" do
  food_descriptions(:butter).NDB_No.must_equal "01001"
end

但是,当我运行测试时,出现以下错误: 预期:“ 01001”实际:1001我不明白为什么该数字不能识别为字符串。 我读过yml将以0开头的值视为八进制值,因此添加引号应足以将其视为字符串,但不起作用。 我也尝试过管道“ |” 标志,但也不起作用。 知道为什么吗?

快速解答(TL; DR)

  • 可以通过引用标量值来保留YAML 1.2前导零。

上下文

  • YAML 1.2
  • 带前导零的标量值

问题

  • 场景:开发人员希望在YAML 1.2文件中指定一个以零开头的标量值。
    • 解析时,前导零会被忽略或截断

  • 在YAML中引用标量值以将其解析为字符串。
  • 非数字值保留前导零。

陷阱

  • 用于数据库或编程语言上下文的数据类型转换可能会将字符串标量转换为数字标量值。

原来问题不是我所想的(yml)。 问题是这些夹具被推送到数据库,而测试实际上是从数据库中检索条目(我认为夹具只是在内存中),并且该值的数据库列类型是整数,而不是字符串,因此前导零被删除。 我的真正问题是,我希望该列成为字符串类型表的主键,并且我没有意识到我创建的迁移没有将测试数据库中列的类型更改为字符串。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM