我创建了一个 RoR 应用程序。
但是,当我添加名为Queue的新模型时,会出现以下错误:
ActionView::Template::Error (undefined method `arel_table' for Queue:Class):
Queue是 rails 或 ruby 的保留字吗?怎么了?
提前致谢。
我创建了一个 RoR 应用程序。
但是,当我添加名为Queue的新模型时,会出现以下错误:
ActionView::Template::Error (undefined method `arel_table' for Queue:Class):
Queue是 rails 或 ruby 的保留字吗?怎么了?
提前致谢。
它不是保留字,但已经有一个具有该名称的类:http ://www.ruby-doc.org/stdlib-2.0/libdoc/thread/rdoc/Queue.html 。这意味着当您调用 Queue 时,constant_missing
不会触发 rails 方法,并且不会加载您的新类。
有两种解决方案。第一个很明显,重命名你的类。第二个是删除之前的定义:
Object.send(:remove_const, :Queue)
在你的一个初始化器中。但是请注意,如果您决定使用原始队列,这可能会在以后产生误导,并且如果您当前正在使用它,则绝对不会出现这种情况。