4

バッキングテーブルを持たない抽象基本クラス「ModBase」から継承するモデルクラス「Abtest」があります。Abtest.newを呼び出すと、ModBaseクラスに「self.abstract_class = true」があるにもかかわらず、次のエラーが発生しました。私は何を間違えましたか?

class ModBase < ActiveRecord::Base
  self.abstract_class = true

class Abtest < ModBase

ActiveRecord::StatementInvalid (Mysql::Error: Table 'mydb.mod_bases' doesn't exist: SHOW FIELDS FROM `mod_bases`):
  activerecord (3.1.0) lib/active_record/connection_adapters/mysql_adapter.rb:435:in `query'
  activerecord (3.1.0) lib/active_record/connection_adapters/mysql_adapter.rb:435:in `execute'
  activerecord (3.1.0) lib/active_record/connection_adapters/abstract_adapter.rb:244:in `log'
  activesupport (3.1.0) lib/active_support/notifications/instrumenter.rb:21:in `instrument'
  activerecord (3.1.0) lib/active_record/connection_adapters/abstract_adapter.rb:239:in `log'
  activerecord (3.1.0) lib/active_record/connection_adapters/mysql_adapter.rb:435:in `execute'
  activerecord (3.1.0) lib/active_record/connection_adapters/mysql_adapter.rb:636:in `columns'
  activerecord (3.1.0) lib/active_record/connection_adapters/abstract/connection_pool.rb:95:in `initialize'
  activerecord (3.1.0) lib/active_record/connection_adapters/abstract/connection_pool.rb:185:in `with_connection'
  activerecord (3.1.0) lib/active_record/connection_adapters/abstract/connection_pool.rb:92:in `initialize'
  activerecord (3.1.0) lib/active_record/connection_adapters/abstract/connection_pool.rb:112:in `call'
  activerecord (3.1.0) lib/active_record/connection_adapters/abstract/connection_pool.rb:112:in `default'
  activerecord (3.1.0) lib/active_record/connection_adapters/abstract/connection_pool.rb:112:in `[]'
  activerecord (3.1.0) lib/active_record/connection_adapters/abstract/connection_pool.rb:112:in `initialize'
  activerecord (3.1.0) lib/active_record/base.rb:717:in `call'
  activerecord (3.1.0) lib/active_record/base.rb:717:in `default'
  activerecord (3.1.0) lib/active_record/base.rb:717:in `[]'
  activerecord (3.1.0) lib/active_record/base.rb:717:in `column_defaults'
  activerecord (3.1.0) lib/active_record/persistence.rb:327:in `attributes_from_column_definition'
  activerecord (3.1.0) lib/active_record/locking/optimistic.rb:69:in `attributes_from_column_definition'
  activerecord (3.1.0) lib/active_record/base.rb:1544:in `initialize'
  app/models/abtest.rb:89:in `new'
4

2 に答える 2

3

これは3.1.0のRailsのバグです。 https://github.com/rails/rails/issues/558

3.1.11にアップグレードしましたが、エラーは二度と発生しませんでした。

于 2013-05-02T18:49:42.107 に答える
0

移行を実行していません。これがこのエラーのすべてです。ActiveRecordには、STIに関係なくModBaseのテーブルが必要です。STIが行うのは、「タイプ」列を設定することだけです。

テーブルレスのセットアップをしようとしているように聞こえるので...探しているものはおそらくActiveModelにあります。基本的に、データベースを必要とせずに多くのARの良さを得ることができます。

ActiveModelのRailscast

于 2013-05-02T14:51:28.700 に答える