我已经编写了一个rspec测试来检查永久链接中的无效字符:
describe "formatting permalinks when creating a page" do
it "does not allow crazy characters" do
page = create(:page, permalink: '#$%^&*first-title')
expect(page).to have(1).errors_on(:permalink)
end
end
在我的page.rb
模型中,我已实施此验证以使其通过:
class Page < ActiveRecord::Base
validates :permalink, format: {:with => /\A[a-zA-Z-]+\Z/, :on => :save!}
before_create :create_slug
def create_slug
self.permalink = self.permalink.parameterize
end
end
但是我得到了他的错误:
expected 1 errors on :permalink, got 0
我做错了什么?我该如何解决这个问题?
答案 0 :(得分:1)
您的create_slug调用参数化。因为它作为before_create运行,所以它会更改&#39;#$%^&amp; * first-title&#39; to&#34; first-title&#34;。
此外,according to the docs,on:应仅用于创建和更新,因此我不确定它是否正在运行。