ruby-on-rails – friendly_id不会为旧记录生成slu ..

我使用了带有Rails应用程序的FriendlyId gem(版本4.0.8).我已经按照 RailsCasts的教程进行操作,根据文档,我必须在rails控制台上运行Model.find_each(&:save)来为旧记录生成slugs.但是,当我这样做时,我的所有旧记录的slug属性仍然没有,所以它并没有真正改变url的.

难道我做错了什么?这只发生在生产方式上.它在开发上运行良好.

更新:

我的模型看起来像这样:

class Member < ActiveRecord::Base
  extend FriendlyId
  friendly_id :name,use: :slugged

  belongs_to :gym

  attr_accessible :category,:name,:description
  validates :category,:description,:presence => true

  has_attached_file :avatar,:styles => { :medium => "300x300>",:thumb => "100x100>" }

  def self.search(search)
    if search.present?
      where("name LIKE ?","%#{search}%")
    else
      find(:all)
    end
  end

  def should_generate_new_friendly_id?
    new_record?
  end
end

解决方法

should_generate_new_friendly_id?因为new_record会返回false吗?是错误的,因为你的记录已经存在.

删除should_generate_new_friendly_id?方法,或试试这个&重新运行:

def should_generate_new_friendly_id?
  new_record? || slug.blank?
end

另见:Rails Friendly_Id on Heroku,Heroku not updating slugs

相关文章

validates:conclusion,:presence=>true,:inclusion=>{...
一、redis集群搭建redis3.0以前,提供了Sentinel工具来监控各...
分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣...
上一篇博文 ruby传参之引用类型 里边定义了一个方法名 mo...
一编程与编程语言 什么是编程语言? 能够被计算机所识别的表...
Ruby类和对象Ruby是一种完美的面向对象编程语言。面向对象编...