ruby-on-rails – 在Rails中创建永久链接(slu) – 为什么我的测
发布时间:2020-12-17 02:10:33 所属栏目:百科 来源:网络整理
导读:我正在编写一个小型CMS作为Rails测试项目(也计划将其用于我的个人网站).我想要SEO友好的URL,所以我有一个测试来验证永久链接是根据页面标题自动创建的(例如关于我们= about-us).但是,我无法弄清楚为什么这个测试失败了.这是代码(我使用的是Rails 2.3.2): #
我正在编写一个小型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_save方法. 解决方法
好吧,我能够搞清楚.我需要使用before_validation作为回调而不是before_save
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |