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
上答案 0 :(得分:4)
我很确定Thread
是Rails中的保留字,我记得有同样的问题。重命名你的课应该解决它。我能够找到this community authored site,其中包含一个保留的Rails单词列表。
答案 1 :(得分:1)
rails
具有自动加载机制,方法是挂钩const_missing
以及常量命名和autoload_paths
的某些惯例的组合。
如果您引用已经预定义的常量,可以在ruby
标准库或rails
中,那么它会将该常量引用到已经加载的常量。
Thread
是ruby
标准库的一部分,这就是为什么当你说Thread.find_by_id(1)
时,它指的是而不是你的模型。
有关详细信息,请参阅Thread和Module#const_missing。