我正在尝试将history添加到现有的生产网站。之前我没有生成friendly_id迁移,所以在添加它并将use: :sluggable
更改为use: [:sluggable, :history]
到我的模型之后,Model.friendly.find...
的能力在模型之前的模型中消失了.save
做了这个改变。
解决这个问题的最佳方法是什么。在迁移过程中,我是否应该遍历模型中的每条记录并# Added this to friendly_id migration
class CreateFriendlyIdSlugs < ActiveRecord::Migration
def up
Model.all.each do |m|
m.save
end
end
end
?这就是我到目前为止所做的一切。不确定这是否有效,但必须有更好的方法。
我在原始问题中提到的是我如何去做。这看起来很笨拙,但确实有效。如果有人在场,我仍然会喜欢更好的答案。
{{1}}
答案 0 :(得分:1)
这应该适用于mysql和postgresql(它没有INSERT IGNORE)
def up
execute <<-SQL
INSERT INTO friendly_id_slugs
(slug, sluggable_id, sluggable_type, created_at)
SELECT m.slug, m.id, 'Model', NOW()
FROM models m
LEFT OUTER JOIN friendly_id_slugs f ON f.sluggable_id = m.id
WHERE m.slug IS NOT NULL AND LENGTH(m.slug) > 0 AND f.id IS NULL
SQL
end