Rails Active Record似乎被破坏了,Rails 4.0.2

时间:2016-03-27 05:01:55

标签: ruby-on-rails ruby

O.k。这让我发疯了 - 如果有人能提供帮助那就太棒了。

我有一个简单的表格"线程"使用自动ID和"名称"一个记录的字段(id = 1,name =" space")。

我有一个名为" Thread.rb"。

的模型
class Thread < ActiveRecord::Base
end

我有一个调用的控制器:

@thread = Thread.find_by_id(1)

但是在加载页面时,我在控制器中出现以下错误:

undefined method `find_by_id' for Thread:Class

我在同一个项目中多次使用find_by_sql没有问题,但是当使用简单的activerecord访问器时,错误输出&#34;找到&#34;,&#34; find_by_id&#34;等

我在rails 4.0.2

2 个答案:

答案 0 :(得分:4)

我很确定Thread是Rails中的保留字,我记得有同样的问题。重命名你的课应该解决它。我能够找到this community authored site,其中包含一个保留的Rails单词列表。

答案 1 :(得分:1)

rails具有自动加载机制,方法是挂钩const_missing以及常量命名和autoload_paths的某些惯例的组合。

如果您引用已经预定义的常量,可以在ruby标准库或rails中,那么它会将该常量引用到已经加载的常量。

Threadruby标准库的一部分,这就是为什么当你说Thread.find_by_id(1)时,它指的是而不是你的模型。

有关详细信息,请参阅ThreadModule#const_missing