YAML对于这类东西是有限的,但是您确实有锚、别名和Merge_Key.在这个问题上,This SO answer是非常详尽的.
因此,您可以重复完全相同的消息,但不能在没有其他库或代码注入的情况下修改该消息:
&standard_answer: "Requires at least one alphanumeric character"
en:
article:
title:
format: *standard_answer
title_format: *standard_answer
在Ruby中,相当于:
en:
article:
title:
format: "Requires at least one alphanumeric character"
title_format: "Requires at least one alphanumeric character"
回答你没有问的问题...
如果您正在try 测试模型验证,我认为您做得太多了:
- 如果Rails决定调整所使用的语言,这些将会被 destruct
- 您的测试现在依赖于您的i18n文件来查找硬编码的字符串
- 它的可读性较差,因为测试约束现在位于两个单独的文件中(但它更紧凑,所以您可以争辩说)
您想知道的是:"我可以在标题中没有任何字母数字字符的情况下保存此记录吗?"
我只会测试验证是成功还是失败.
如果您使用RSpec,则为I like this pattern.
或者,另一种 Select ,RSpec Expectations ships with Predicate matchers:
# prove the record is valid
expect(record).to be_valid
# make the record invalid in only 1 way
record.title = 'does not have a number'
expect(record).to be_invalid # also works: expect(record).not_to be_valid
请注意,我首先要确保记录有效,然后更改一项内容,然后再次判断有效性.这有助于确保您测试的是正确的验证.