3

我的一张表中有一个名为“type”的列。当我尝试像 group.type 一样访问它时,出现以下错误:

super: no superclass method `type' for #<Group:0x000000035eaf30> 

但是,当我尝试使用迁移重命名列时,出现以下错误

No such column: groups.type (migration failed)

我尝试使用查询直接在 mysql 数据库中重命名该列,但这也不起作用。

mysql> alter table groups change type group_type int(11);
ERROR 1054 (42S22): Unknown column 'type' in 'groups'

请帮忙。

4

3 回答 3

16

The error comes from the single table inheritance feature that comes with ActiveRecord. Just tell it to use a different column than type:

class Group < ActiveRecord::Base

  self.inheritance_column = nil

  #...
end

With that, you don't have to rename the column.

于 2014-12-03T17:19:39.603 回答
0

我认为typeRuby on Rails 中的 ReservedWords
所以尝试像这样访问:

groups.[type]
于 2012-08-16T10:07:33.383 回答
0

我想你会发现你必须用反引号(`)包围单词类型。我认为“类型”是一个保留字,这就是导致您的错误的原因。

我现在正在使用手机,因此无法粘贴您需要的字符,但它位于大多数标准键盘的左上角。

于 2012-08-16T10:13:20.653 回答