Ruby on Rails:将模型X重命名为Person模型

时间:2012-10-04 15:16:11

标签: ruby-on-rails ruby database ruby-on-rails-3

我刚使用此命令将我的表格客户端重命名为人员

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

我仔细地将所有实例和文件名从客户端重命名为 person ,并从客户端重命名为 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模型而不是重命名它?

1 个答案:

答案 0 :(得分:4)

您还需要将所有外键从client_id重命名为person_id,看起来您似乎忽略了这一点。在该迁移中,您需要执行以下操作:

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

为引用client_id的每个列执行此操作。