Ruby on Rails 3.2.0 ActiveRecordを継承したクラスのサブクラスでtable_nameが指定できない

3.1はできるらしいですが、3.2ではできないらしいです。

class A<< ActiveRecord::Base
end

class B << A
table_name = “bs”
end

とすればBで使われるテーブルはbsになるはずですが、superクラスの設定のまま。

調べてみると同様の現象に困っている人がいました。

これが私の勘違いでなければオライリーの「エンタープライズRails」にあるポリモーフィズムの代わりに継承を使うという部分(P.128)が実現不可能になるということではないでしょうか。

前述の記事でも話されているように「何で継承なんてしたいの?」と言っている人もいますが、オライリーの本に書いてあるようなことをしたいわけですよ。他にもいろいろと継承の多重継承にはメリットがあります。
ActiveRecordは継承の多重継承するなということなのか、またはRailsのバグなのか。。

とにかく別の方法でやりたいことを実現するように方向転換を余儀なくされました。

いくら設計してもこういうことがあるからなぁ。。

 

追記(同日)解決編

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です