下記エラーを飛ばして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.
ruby-1.9.2-p290 :111 > Book.find(1, :select => 'id, name, type as etype')
とかでいけました。
ありがとうございます!
Please rename this column if とかでググっても出て来ませんでした。
助かりました!
エラーメッセージに書かれている通りです。
>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 で使われるカラム名を変更できるので、エラーを回避できます。
下記エラーが出ちゃいました・・・
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>'
http://d.hatena.ne.jp/takuya_1st/20110719/1311061354
http://d.hatena.ne.jp/suer/20090626/1246012135
カラム名に使ってはいけない予約語がありますので
テーブル設計をするときに それを使わないようにするのが
一般的でしょう。
これができないと なると 別名ですが・・・。
ありがとうございます。
もちろん最終的にはそうなる予定です!
ruby-1.9.2-p290 :111 > Book.find(1, :select => 'id, name, type as etype')
2012/01/06 09:48:54とかでいけました。
ありがとうございます!
Please rename this column if とかでググっても出て来ませんでした。
助かりました!