0

我创建了一个 RoR 应用程序。

但是,当我添加名为Queue的新模型时,会出现以下错误:

ActionView::Template::Error (undefined method `arel_table' for Queue:Class):

Queue是 rails 或 ruby​​ 的保留字吗?怎么了?

提前致谢。

4

1 回答 1

1

它不是保留字,但已经有一个具有该名称的类:http ://www.ruby-doc.org/stdlib-2.0/libdoc/thread/rdoc/Queue.html 。这意味着当您调用 Queue 时,constant_missing不会触发 rails 方法,并且不会加载您的新类。

有两种解决方案。第一个很明显,重命名你的类。第二个是删除之前的定义:

Object.send(:remove_const, :Queue)

在你的一个初始化器中。但是请注意,如果您决定使用原始队列,这可能会在以后产生误导,并且如果您当前正在使用它,则绝对不会出现这种情况。

于 2013-09-30T12:05:19.893 回答