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
それを拡張するモデルで明示的に定義する必要はありません。