这应该很简单,但我无法弄清楚为什么它不起作用。我在这里看到了许多更复杂的唯一性构造。我有应该是唯一索引的列。我在模型中指定了两次,只是测试选项,但我的唯一性测试仍然失败。
模型验证码:
validates :feed_url, presence:true,
format: {with: VALID_URL_REGEX},
uniqueness: true
validates_uniqueness_of :feed_url
RSpec 代码:
before do
@feed = FactoryGirl.create(:feed)
end
...
describe "when URL is already taken" do
before do
feed_with_same_url = @feed.dup
feed_with_same_url.feed_url = @feed.feed_url
feed_with_same_url.save
end
it { should_not be_valid }
end
保存应该无效,但测试失败,因为模型说它是有效的,即使字段相等。我自己在断点检查了这些字段,它们在大小写、长度、值等方面完全相同。
存在性和正则表达式有效性测试完美运行,因此模型正在运行。
我试图在模型中而不是在索引中执行此操作。我相信我昨晚读到 Rails 4 更喜欢(弃用?)代码而不是数据库中的这些测试,但我今晚找不到那个源。(?)无论哪种方式,我都希望看到模型正常工作。