rails generate - 使用旧表名创建迁移,rails继续查找不存在的表

时间:2015-10-25 21:05:01

标签: ruby-on-rails ruby activerecord

我曾经提到一个名为“people”的表,但决定将其改为“person” 我完全删除了对表“people”的所有引用 但是rails一直指的是这个旧的“人”表,我不确定哪里仍然可以引用这个表。

我删除了灯具和所有迁移脚本,并执行了以下操作 rails destroy model Person rails destroy model人物

  • 希望能清除任何其他参考文献等。 重新创建人员控制器,当我尝试生成模型Person(对应于人员表)时,它会创建一个“创建表”迁移脚本。

我正在使用MYSQL

C:\RubyApps\RRApp>rails generate model Person
      invoke  active_record
      create    db/migrate/20151025203042_create_people.rb
      create    app/models/person.rb
      invoke    test_unit
      create      test/models/person_test.rb
      create      test/fixtures/people.yml

-----------

ActiveRecord::StatementInvalid in PersonsController#show
Mysql2::Error: Table 'rr.people' doesn't exist: SELECT `people`.* FROM `people` WHERE `people`.`personid` IS NULL LIMIT 1

Rails.root: C:/RubyApps/RRApp

----------------

感谢对此的任何意见。谢谢!

1 个答案:

答案 0 :(得分:0)

好吧,Rails希望您的表格名称是模型的复数形式,smart enough可以理解复数Person变为people

如果您坚持使用自定义表名(我不建议),您可以通过以下代码覆盖它:

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

不要忘记在迁移中将表名更改为person