Ruby on rails 为什么永久链接的格式验证失败?
我已经编写了一个rspec测试,用于检查permalink中的无效字符:Ruby on rails 为什么永久链接的格式验证失败?,ruby-on-rails,validation,rspec,format,permalinks,Ruby On Rails,Validation,Rspec,Format,Permalinks,我已经编写了一个rspec测试,用于检查permalink中的无效字符: 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(:perma
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
我做错了什么?如何修复此问题?您的create\u slug调用将参数化。因为它是在创建之前作为一个文件运行的,所以它将“#$%^&*first title”更改为“first title”
此外,on:应仅与create and update一起使用,因此我不确定它是否正在运行。那么您的意思是不需要验证?即使我删除了验证,测试仍然失败。如何更正此问题?请尝试删除:on=>:save!你的验证的一部分,或者(b)删除:create_slug before filterI我没有意识到参数化做了这么多-我现在已经取消了测试。是的,参数化非常整洁(和/或危险)!看看这里的文档
expected 1 errors on :permalink, got 0