我正在将一个非常旧的应用程序从friendly_id 3.2迁移到5.1。
我有一个目前有cached_slug
字段的用户模型。我创建了一个名为slug
的新字段。最初,我以为我可以将数据从cached_slug复制到slug,但我注意到还有一个名为slugs的整个表,看起来像这样:
create_table "slugs", force: :cascade do |t|
t.string "name", limit: 255
t.integer "sluggable_id"
t.integer "sequence", default: 1, null: false
t.string "sluggable_type", limit: 40
t.string "scope", limit: 255
t.datetime "created_at"
end
按照Rails快速入门的FriendlyID README中的说明,我运行了创建此表的rails generate friendly_id
:
create_table "friendly_id_slugs", force: :cascade do |t|
t.string "slug", null: false
t.integer "sluggable_id", null: false
t.string "sluggable_type", limit: 50
t.string "scope"
t.datetime "created_at"
end
所以现在我对完成迁移需要做的事情感到困惑。我尝试使用控制台创建一个新用户,friendly_id_slugs
表仍然是空的,所以我不确定它用于何时或用于什么。
我有两个问题: 1)这个用于的其他表是什么 2)我需要做些什么才能将旧的slugs迁移到新的表/字段,以便它继续向前发展?
谢谢!
答案 0 :(得分:1)
如果您不介意丢失FriendlyId's History记录(即:旧的slu),
slug
表<ModelName>.find_each(&:save)
。步骤2应该重新生成新的slu ..
警告:在生产服务器上执行此操作前进行测试!
更新:您还可以在迁移文件中执行第2步
class RegenerateSlugs < ActiveRecord::Migration
def change
# <ModelName>.find_each(&:save)
User.find_each(&:save)
Article.find_each(&:save)
end
end