我正在编写一个小型CMS作为Rails测试项目(也计划将其用于我的个人网站).我想要SEO友好的URL,所以我有一个测试来验证永久链接是根据页面标题自动创建的(例如关于我们=> about-us).但是,我无法弄清楚为什么这个测试失败了.这是代码(我使用的是Rails 2.3.2):
# page_test.rb # note I am using the "shoulda" framework require 'test_helper' class PageTest < ActiveSupport::TestCase should_validate_presence_of :title,:permalink,:content should_validate_uniqueness_of :title should "create permalink automatically" do p = pages(:sample_page) p.save assert_equal "sample-page",p.permalink end end # pages.yml sample_page: title: Sample Page permalink: # gets automatically created by model content: This is a sample page # page.rb class Page < ActiveRecord::Base validates_presence_of :title,:content validates_uniqueness_of :title before_save :generate_permalink private def generate_permalink self.permalink = self.title.parameterize end end
会发生什么是永久链接是零,而不是像它应该的那样“样本页面”.但是,如果我手动将固定链接放在夹具中并更改测试,例如:
p - pages(:sample_page) p.title = "Contact Us" p.save assert_equal "contact-us",p.permalink
解决方法
好吧,我能够搞清楚.我需要使用before_validation作为回调而不是before_save
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。