人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

【Rails】「type」というRailsで使ってはいけないカラムがDBにあります。このカラムのデータを利用することはないのですが別の理由で削除したりrenameしたりできません。
下記エラーを飛ばしてtype以外のデータを利用する方法を教えてください。

具体的には下記エラーを解消したいです。
uby-1.9.2-p290 :102 > Book.find(1)
Book Load (0.8ms) SELECT `book`.* FROM `book` WHERE `book`.`id` = 1 LIMIT 1
ActiveRecord::SubclassNotFound: The single-table inheritance mechanism failed to locate the subclass: 'personal'. This error is raised because the column 'type' is reserved for storing the class in case of inheritance. Please rename this column if you didn't intend it to be used for storing the inheritance class or overwrite Book.inheritance_column to use another column for that information.

●質問者: pandeiro_jp
●カテゴリ:インターネット ウェブ制作
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● techmedia-think
●310ポイント ベストアンサー

findする際に別名を指定する方法があります。
http://www.ginriki.net/wd/2008/10/02/43/


pandeiro_jpさんのコメント
ruby-1.9.2-p290 :111 > Book.find(1, :select => 'id, name, type as etype') とかでいけました。 ありがとうございます! Please rename this column if とかでググっても出て来ませんでした。 助かりました!

2 ● nuna
●166ポイント

エラーメッセージに書かれている通りです。
>Please rename this column if you didn't intend it to be used for storing the inheritance class or overwrite Book.inheritance_column to use another column for that information.

class Book < ActiveRecord::Base
inheritance_column :_type
end

などとすれば STI で使われるカラム名を変更できるので、エラーを回避できます。


pandeiro_jpさんのコメント
下記エラーが出ちゃいました・・・ ArgumentError: wrong number of arguments (1 for 0) from /Users/hogehoge/.rvm/gems/ruby-1.9.2-p290/gems/activerecord-3.1.0/lib/active_record/base.rb:634:in `inheritance_column' from /Users/hogehoge/fugafuga/app/models/book.rb:4:in `<class:Book>'

3 ● きゃづみぃ
●24ポイント

http://d.hatena.ne.jp/takuya_1st/20110719/1311061354

http://d.hatena.ne.jp/suer/20090626/1246012135

カラム名に使ってはいけない予約語がありますので
テーブル設計をするときに それを使わないようにするのが
一般的でしょう。

これができないと なると 別名ですが・・・。


pandeiro_jpさんのコメント
ありがとうございます。 もちろん最終的にはそうなる予定です!
関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ