模型尝试在生产中使用与开发中不同的表名

Jas*_*ett 2 ruby-on-rails ruby-on-rails-3

我有一个名为的模型User.我已pluralize_table_names设置为false,因此表User使用的是user.(那真是一口!)

有趣的是,我的模型在开发中表现正确,但在生产中User尝试使用一个users不存在的表.我所有的其他模型都使用它们的单个表名.看这个:

$ rails console
Loading development environment (Rails 3.0.3)
irb(main):001:0> Client.table_name
=> "client"
irb(main):002:0> Appointment.table_name
=> "appointment"
irb(main):003:0> User.table_name
=> "user"
irb(main):004:0> 
$ rails console production
Loading production environment (Rails 3.0.3)
irb(main):001:0> Client.table_name
=> "client"
irb(main):002:0> Appointment.table_name
=> "appointment"
irb(main):003:0> User.table_name
=> "users"
irb(main):004:0>
Run Code Online (Sandbox Code Playgroud)

正如你所看到的,除了User生产之外,一切都很好.是什么赋予了?

编辑:这是生产中的模型代码:

class User < ActiveRecord::Base
  acts_as_authentic
end
Run Code Online (Sandbox Code Playgroud)

在开发中:

class User < ActiveRecord::Base
  acts_as_authentic
end
Run Code Online (Sandbox Code Playgroud)

同样的事情.我甚至将生产实例指向与开发相同的数据库,问题仍然存在.当我开始使用Authlogic时,我开始遇到这些问题,所以我开始怀疑开发环境以某种方式知道生产环境没有的一些Authlogic内容.

更新:我试图杀死尽可能多的活动部件.我将生产环境和开发环境都设置为指向dev数据库.这并没有改变任何事情.我将生产环境改为开发环境,并开始工作.我将我的开发环境改为生产环境,它停止了工作.这告诉我从开发到生产的变化让它停止工作.不过我不知道是什么.

Jas*_*ett 9

我想到了.我最终user在数据库中保留了单数表名,但在我的模型中,我这样做了:

class User < ActiveRecord::Base
  set_table_name "user"
  acts_as_authentic
end
Run Code Online (Sandbox Code Playgroud)

指令必须按顺序排列,否则不起作用!我不知道为什么会这样(实际上,如果我考虑一下,这是有道理的)我不知道为什么我决定尝试切换订单,但我很高兴我做到了.