列名称问题'类型'在轨道3

时间:2012-08-16 10:05:51

标签: mysql ruby-on-rails-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'

请帮忙。

3 个答案:

答案 0 :(得分:10)

错误来自ActiveRecord附带的单表继承功能。只需告诉它使用与type不同的列:

class Group < ActiveRecord::Base

  self.inheritance_column = "not_sti"

  #...
end

这样,您就不必重命名该列。

答案 1 :(得分:0)

我认为typeReservedWords in Ruby on Rails 所以尝试这样访问:

groups.[type]

答案 2 :(得分:0)

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

我现在正在打电话,所以我无法粘贴您需要的角色,但它位于大多数标准键盘的左上角。