0

Service「実際のサービス」によってオーバーライドされるいくつかを含む、いくつかの一般的な機能を含む一般的なモデルがあります。

service.rb

class Service < ActiveRecord::Base
  def get_line_items
    raise "Not Implemented"
  end
end

次に、モデルを拡張するServiceモデルがあります。

misc_service.rb

class MiscService < Service
  attr_accessible :retail_price
  def get_line_items
    return [{"Misc Service - 1" => retail_price}]
  end
end

ただし、Rails コンソールで MiscService モデルにアクセスしようとすると、次のエラーが発生します。

:001 > service = MiscService.first
ActiveRecord::StatementInvalid: Mysql2::Error: Table 'devdb.services' doesn't exist: SHOW FULL FIELDS FROM `services`

それがサービスモデルの拡張であるため、それが起こっていることがわかります。モデルを拡張するモデルが代わりに独自のテーブルを使用するようにするために、モデルActiveRecord::Baseでできることはありますか? Serviceモデルからそれを実現し、Serviceそれを拡張するモデルで明示的に定義する必要はありません。

4

1 に答える 1

0

これはサブクラスとは関係ありません。サービス テーブル自体の準備ができていません。移行ファイルの準備ができて実行されていることを確認してください$ rake db migrate

于 2014-03-13T03:04:35.007 に答える