我有一个SQLite3数据库,我将一个名为People
的表更改为Persons
(以更好地匹配具有单一Person
模型的标准)。
我使用SQLite3和调用
在数据库中手动进行了此更改ALTER TABLE People RENAME TO Persons;
现在,当我运行应用程序时出现错误:
SQLite3::SQLException: no such table: people: SELECT "people".* FROM "people"
我更改了控制器,模型,迁移和模式文件中的表名以匹配更改。我应该在哪里做出改变?
答案 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处理多元化。它可能会转化为人并且变得混乱。
然后,您将迁移数据,然后删除旧表。您还必须检查视图和控制器的命名。