是否有带有条件的validates_uniqueness_of(:attribute)的Shoulda匹配器

时间:2013-11-07 13:39:24

标签: ruby-on-rails rspec shoulda

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

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

validates_uniqueness_of :is_correct, conditions: -> { where(is_correct: true) }

这有效,但我也想用Rspec和Shoulda匹配器测试它。

我在以下位置查找了Shoulda匹配器的信息: http://rubydoc.info/github/thoughtbot/shoulda-matchers/master/frames

但是没有指示如何为

定义Shoulda匹配器
validates_uniqueness_of(:is_correct) with the attribute value set to true

有没有办法用Shoulda匹配器来定义它?

1 个答案:

答案 0 :(得分:1)

是的,有。应该是匹配的,实际上非常广泛,但需要一点时间才能找到一些额外的东西。查看此网站:http://travisonrails.com/2013/02/20/shoulda-matcher-model-extras

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