为什么我的格式验证失败了永久链接?

时间:2013-09-01 06:36:23

标签: ruby-on-rails validation rspec format permalinks

我已经编写了一个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

我做错了什么?我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

您的create_slug调用参数化。因为它作为before_create运行,所以它会更改&#39;#$%^&amp; * first-title&#39; to&#34; first-title&#34;。

此外,according to the docs,on:应仅用于创建和更新,因此我不确定它是否正在运行。