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

前端之家收集整理的这篇文章主要介绍了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

猜你在找的Ruby相关文章