【发布时间】:2012-08-15 02:54:42
【问题描述】:
我在 Rails 应用程序中使用了 FriendlyId gem(版本 4.0.8)。我已经按照 RailsCasts 上的教程进行操作,并且根据文档,我必须在 rails 控制台上运行 Model.find_each(&:save) 才能为旧记录生成 slug。但是,当我这样做时,我所有的旧记录的 slug 属性仍然为零,所以它并没有真正改变 url。
我做错了吗?顺便说一句,这只发生在生产中。它在开发中运行良好。
更新:
我的模型如下所示:
class Member < ActiveRecord::Base
extend FriendlyId
friendly_id :name, use: :slugged
belongs_to :gym
attr_accessible :category, :name, :description
validates :category, :name, :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
【问题讨论】:
-
你的
model是什么样的? -
用型号代码更新了问题,谢谢。
-
注释掉
should_generate_new_friendly_id?块有用吗? -
在过去的答案中失去帮助stackoverflow.com/questions/10957505/…
-
@Kyle C 这正是我所经历的。虽然我决定手动更新旧记录的 slug,因为它们并不多。谢谢!
标签: ruby-on-rails ruby-on-rails-3 friendly-url friendly-id