【发布时间】:2014-12-11 10:09:27
【问题描述】:
我正在从事一个项目,我从旧版本的 Rails(我认为是 1 或 2)继承了一些遗留代码。在修补它之后,我尝试启动它,但我在我的一个控制器中遇到了麻烦。具体来说,@user = current_user || User.new 行说明找不到 current_user。在进行了一些挖掘之后,我看到 def current_user 挂在我的 application.rb 文件中。为什么应用不加载这个方法?
我是否误解了 application.rb 应该如何工作?
(如果重要的话,这个方法似乎受到保护,但我不知道这会如何阻止应用看到这个定义。)
【问题讨论】:
-
很难说没有更多的上下文。您可能没有在您认为自己的类上定义方法,或者您在意想不到的地方使用它。 ApplicationController 也曾经是 application.rb 的特例(而不是 application_controller.rb)——不确定它何时停止加载前者
-
谢谢弗雷德里克——你的回答,以一种非常迂回的方式,实际上导致了答案。没错,显然有两个 application.rb 文件。我实际上是继承此代码的第三组。第一个是敬虔的,并设法写了整件事。第二个尝试为新版本的 Rails 更新应用程序,但失败了。他们没有注意到有两个不同的 application.rb 文件并设法在 app/controllers 和 config 文件夹之间切换文件。我无话可说……我觉得自己没有意识到这就是发生的事情一样愚蠢。
-
哦,作为一个圆满的结局,我已切换文件并将控制器文件夹中的 application.rb 正确重命名为 application_controller.rb。现在一切正常......到目前为止。
标签: ruby-on-rails config