3

テーブルの 1 つに「type」という名前の列があります。group.type のようにアクセスしようとすると、次のエラーが発生しました。

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

ただし、移行を使用して列の名前を変更しようとすると、次のエラーが発生します

No such column: groups.type (migration failed)

クエリを使用して、mysql db で列の名前を直接変更しようとしましたが、それも機能しません。

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

助けてください。

4

3 に答える 3

16

このエラーは、ActiveRecord に付属する単一テーブル継承機能から発生します。とは異なる列を使用するように指示するだけですtype:

class Group < ActiveRecord::Base

  self.inheritance_column = nil

  #...
end

これにより、列の名前を変更する必要はありません。

于 2014-12-03T17:19:39.603 に答える
0

type という単語をバッククォート ( ` )で囲む必要があることがわかると思います。「タイプ」は予約語だと思います。それがエラーの原因です。

私は今携帯電話を使用しているので、必要な文字を貼り付けることができませんが、ほとんどの標準キーボードの左上にあります.

于 2012-08-16T10:13:20.653 に答える
0

Ruby on Rails の ReservedWordsだと思いtypeます。 したがって、次のようにアクセスしてみてください。

groups.[type]
于 2012-08-16T10:07:33.383 に答える