使用Rails在SQLite3中更改表名?

时间:2014-01-10 04:22:45

标签: ruby-on-rails ruby sqlite

我有一个SQLite3数据库,我将一个名为People的表更改为Persons(以更好地匹配具有单一Person模型的标准)。

我使用SQLite3和调用

在数据库中手动进行了此更改
ALTER TABLE People RENAME TO Persons;

现在,当我运行应用程序时出现错误:

SQLite3::SQLException: no such table: people: SELECT "people".* FROM "people"

我更改了控制器,模型,迁移和模式文件中的表名以匹配更改。我应该在哪里做出改变?

2 个答案:

答案 0 :(得分:2)

如果更改表名,则Rails的默认约定会被破坏。您必须告诉Rails使用persons表而不是people,因为Rails认为Person模型的表格为people

[1] pry(main)> 'person'.pluralize
=> "people"

如果您仍想更改表名,则需要将其配置为:

class Person < ActiveRecord::Base
    self.table_name = "persons"
end

答案 1 :(得分:2)

我认为你会更好地生成一个模型“人”并让Rails处理多元化。它可能会转化为人并且变得混乱。

然后,您将迁移数据,然后删除旧表。您还必须检查视图和控制器的命名。