3

我正在尝试编写一个将创建一个表并添加几个索引的迁移。

这是迁移:

class CreatePages < ActiveRecord::Migration
  def change
    create_table :pages do |t|
        t.string "name", :limit => 50
        t.string "permalink"
        t.integer "position"
        t.boolean "visible"
        t.integer "subject_id"

        add_index("pages","subject_id")
        add_index("pages","name")

      t.timestamps
    end
  end
end

当我尝试并运行此迁移时,出现以下错误:

PG ::错误:错误:关系“页面”不存在:在“页面”(“subject_id”)上创建索引“index_pages_on_subject_id”

有人可以告诉我我做错了什么吗?

谢谢!

4

1 回答 1

4

您需要在块add_index外调用方法create_table,或index在块内调用。

第一种方法:

class CreatePages < ActiveRecord::Migration
  def change
    create_table :pages do |t|
        t.string "name", :limit => 50
        t.string "permalink"
        t.integer "position"
        t.boolean "visible"
        t.integer "subject_id"

      t.timestamps
    end

    add_index("pages","subject_id")
    add_index("pages","name")
  end
end

第二种方法:

class CreatePages < ActiveRecord::Migration
  def change
    create_table :pages do |t|
        t.string "name", :limit => 50
        t.string "permalink"
        t.integer "position"
        t.boolean "visible"
        t.integer "subject_id"
        t.index("subject_id")
        t.index("name")

      t.timestamps
    end


  end
end

就我个人而言,我会选择第二个,因为这更整洁。

于 2012-10-20T16:21:19.280 回答