在模型中包含以下内容:
validates_uniqueness_of :title,
if: proc { |item| item.item_type == 'tag' },
case_sensitive: false,
message: I18n.t('errors.key', value: "%{value}")
并尝试使用以下内容在rspec中进行验证:
expect { xxx }.to raise_error(
ActiveRecord::RecordInvalid,
I18n.t('errors.key', value: '...passing the title...')
)
我紧紧抓住以下内容:
ActiveRecord::RecordInvalid with "translated error",
got #<ActiveRecord::RecordInvalid: Validation failed: translated error>
期望等待没有报价的值,而发送的值有报价;它失败了
我在默认设置中遇到了同样的错误:
activerecord:
errors:
models:
item:
attributes:
title:
taken: 'translated error'
同样的测试通过以下内容:
expect { xxx }.to raise_error
expect { xxx }.to raise_error( ActiveRecord::RecordInvalid )
使用默认设置也是如此:
如果有任何帮助,谢谢你
答案 0 :(得分:2)
ActiveRecord将前缀>>> message = "Hello Pls Work Bot"
>>> print "pls work" in message.lower()
True
添加到错误消息中。请在测试中尝试此操作:
Validation failed:
您可以通过在语言文件中设置以下键来更改此默认值:
expect { xxx }.to raise_error(
ActiveRecord::RecordInvalid,
"Validation failed: " + I18n.t('errors.key', value: '...passing the title...')
)