gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 23:39:54 26 4
gpt4 key购买 nike

我有一个名为 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>

如您所见,除了生产中的 User 之外,一切都很好。给了什么?

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

class User < ActiveRecord::Base
acts_as_authentic
end

并在开发中:

class User < ActiveRecord::Base
acts_as_authentic
end

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

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

最佳答案

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

class User < ActiveRecord::Base
set_table_name "user"
acts_as_authentic
end

指令必须按照这个顺序,否则它将无法工作!我不知道为什么会这样(实际上,如果我稍微考虑一下,这是有道理的)而且我不知道为什么我决定尝试调换顺序,但我很高兴我做到了。

关于ruby-on-rails - 模型尝试在生产中使用与开发中不同的表名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5099835/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com