0

我刚刚使用以下命令将我的表Client重命名为Person :

class RenameClientsToPeople < ActiveRecord::Migration
  def change
    rename_table :clients, :people
  end
end

我小心地将所有实例和文件名从client重命名为person以及从clients重命名为people。但由于某种原因,我的应用程序将不再工作。我经常收到这样的错误:

SQLite3::SQLException: no such column: projects.person_id: SELECT COUNT(*) FROM "projects" INNER JOIN "people" ON "projects"."person_id" = "people"."person_id" WHERE "people"."user_id" = 1

谁能告诉我如何解决这个问题?

也许我应该从头开始重新创建 Person 模型,而不是仅仅重命名它?

4

1 回答 1

4

您还需要将所有外键从 to 重命名client_idperson_id看起来您忽略了这样做。在该迁移中,您需要执行以下操作:

class RenameClientsToPeople < ActiveRecord::Migration
  def change
    rename_table :clients, :people
    rename_column :projects, :client_id, :person_id
  end
end

对引用的每一列执行此操作client_id

于 2012-10-04T15:19:04.970 回答