迁移时我遇到了以下错误信息:
PG::UndefinedTable: ERROR: relation "actioncodes" does not exist
: ALTER TABLE "organizations" ADD CONSTRAINT "fk_rails_4ecaa2493e"
FOREIGN KEY ("actioncode_id")
REFERENCES "actioncodes" ("id")
我有一个关于组织的迁移文件如下:
class CreateOrganizations < ActiveRecord::Migration
def change
create_table :organizations do |t|
t.string :name, null: false, limit: 40
t.references :actioncode, index: true, foreign_key: true
t.boolean :activated
t.datetime :activated_at
t.timestamps null: false
end
end
end
对于操作码,我有迁移文件:
class CreateActioncodes < ActiveRecord::Migration
def change
create_table :actioncodes do |t|
t.string :code, null: false, limit: 20
t.string :description, limit: 255
t.timestamps null: false
end
end
end
class AddIndexToActioncodesCode < ActiveRecord::Migration
def change
add_index :actioncodes, :code, unique: true
end
end
组织机构模型文件包含:
belongs_to: actioncode
。而actioncodes模型文件包括:
has_many: organizations
。
您知道是什么导致了错误消息吗?
如果我从迁移文件中删除index:true,foreign_key:true
,它将在没有错误的情况下进行迁移。当我用不正确的行t.references:actioncode_id,index:true,foreign_key:true
替换该行时,它会给出以下错误,其中最后一行(“ids”)表明Rails似乎有问题与表的名称?PG::UndefinedTable: ERROR: relation "actioncode_ids" does not exist
: ALTER TABLE "organizations" ADD CONSTRAINT "fk_rails_604f95d1a1"
FOREIGN KEY ("actioncode_id_id")
REFERENCES "actioncode_ids" ("id")
CreateOrganizations
迁移正在CreateActioncodes
执行之前运行。应该先运行CreateActioncodes
,以确保actioncodes
表存在。 - Prakash Murthyt.references :actioncode, index: true, foreign_key: true
。然后手动从当前组织迁移文件中删除该行。但是,创建额外/新的迁移文件的命令是什么? - Nick