加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读