Ruby on rails 是否有一个Shoulda matcher来验证(:属性)的唯一性和条件

Ruby on rails 是否有一个Shoulda matcher来验证(:属性)的唯一性和条件,ruby-on-rails,rspec,shoulda,Ruby On Rails,Rspec,Shoulda,我正在创建一个包含章节和测验的课程应用程序。管理员可以通过添加问题和答案来创建测验。我想应用一个业务规则,这样一个问题只能有一个答案,is\u correct属性设置为“true” 因此,我在我的答案模型中添加了一个验证回调: validates_uniqueness_of :is_correct, conditions: -> { where(is_correct: true) } 这是可行的,但我也想用Rspec和Shoulda匹配器来测试它 我在以下位置查找了Shoulda mat

我正在创建一个包含章节和测验的课程应用程序。管理员可以通过添加问题和答案来创建测验。我想应用一个业务规则,这样一个问题只能有一个答案,
is\u correct
属性设置为“true”

因此,我在我的答案模型中添加了一个验证回调:

validates_uniqueness_of :is_correct, conditions: -> { where(is_correct: true) }
这是可行的,但我也想用Rspec和Shoulda匹配器来测试它

我在以下位置查找了Shoulda matchers的信息:

但目前还没有关于如何定义Shoulda匹配器的说明

validates_uniqueness_of(:is_correct) with the attribute value set to true

有没有办法用Shoulda matcher来定义这一点?

是的,有。Shoulda matchers实际上非常广泛,但花了一点时间才找到一些额外的。查看此网站:

describe Answer do
  context 'validations' do
    it { should validate_uniqueness_of(:is_correct) }
  end
end