Ruby on rails 升级后失败的唯一性\u应匹配器

Ruby on rails 升级后失败的唯一性\u应匹配器,ruby-on-rails,shoulda,Ruby On Rails,Shoulda,我刚刚将Rails项目升级为使用Shoulda Matchers 3.0 但是,验证title属性唯一性的模型测试现在失败: app/models/product.rb it { is_expected.to validate_uniqueness_of(:title) } spec/models/product_spec.rb it { is_expected.to validate_uniqueness_of(:title) } 失败测试的错误消息为: Product should

我刚刚将Rails项目升级为使用Shoulda Matchers 3.0

但是,验证title属性唯一性的模型测试现在失败:

app/models/product.rb

it { is_expected.to validate_uniqueness_of(:title) }

spec/models/product_spec.rb

it { is_expected.to validate_uniqueness_of(:title) }
失败测试的错误消息为:

Product should validate that :title is case-sensitively unique
 Failure/Error: it { is_expected.to validate_uniqueness_of(:title) }
   Product did not properly validate that :title is case-sensitively
   unique.
     The record you provided could not be created, as it failed with the
     following validation errors:

     * title: ["can't be blank"]
     * description: ["can't be blank"]
 # ./spec/models/product_spec.rb:6:in `block (2 levels) in <top (required)>'
产品应验证:标题区分大小写且唯一
失败/错误:应为{验证(:title)的唯一性}
产品未正确验证:标题区分大小写
独一无二。
无法创建您提供的记录,因为该记录失败
以下验证错误:
*标题:[“不能为空”]
*说明:[“不能为空”]
#./spec/models/product_spec.rb:6:in'block(2层)in'
有没有人有这方面的经验

谢谢你的帮助

安东尼

有一个已知的问题——显然已在master中修复

在等待修复时,您可以暂时锁定到3.0.1版,该版本应该可以正常工作

唯一性匹配器在3.0.x中确实更改为默认区分大小写,以匹配rails validator的默认值,因此如果rails validations设置为不区分大小写,则必须将匹配器调用更新为

is_expected.to validate_uniqueness_of(:whatever_field).case_insensitive
有一个已知的问题--显然已在master中修复

在等待修复时,您可以暂时锁定到3.0.1版,该版本应该可以正常工作

唯一性匹配器在3.0.x中确实更改为默认区分大小写,以匹配rails validator的默认值,因此如果rails validations设置为不区分大小写,则必须将匹配器调用更新为

is_expected.to validate_uniqueness_of(:whatever_field).case_insensitive

谢谢你,汤姆。我想我会等待Shoulda Matchers的新版本更新,如果你在3.0.1 toothanks Tom中出现错误,你需要做些什么。我想我会等待Shoulda Matchers的新版本更新,如果你也在3.0.1中遇到错误,你需要做些什么