0

扩展通用模型我有一个通用的Service模型,其中包含几个通用函数,其中包括几个将被'实际服务'覆盖。扩展从ActiveRecord :: Base

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 

但是,试图访问MiscService时模型在rails控制台中,我得到错误:

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

我可以看到发生的事情,因为它的扩展ActiveRecord::Base的服务模式,所以是不是我可以在Service模型做造成任何模型扩展它,而不是使用自己的表?我宁愿从Service模型中发生这种情况,而不必在扩展它的任何模型中明确定义它。

回答

0

这与子类无关。你的服务表本身还没有准备好。请确保您有迁移文件准备和运行$ rake db migrate

+0

我不希望这是一个'Service'表现在或曾经 - 我只是想'MiscService'和任何其他服务我会在以后定义继承全部从方法'服务',同时使用他们自己的表,所有这些表都将有独特的模式。 – bdx

+0

如果您只想使用方法,请使用模块并包含/扩展它们,然后模型将像服务一样行事。不要使用继承。 –

+0

这似乎很明智。谢谢 – bdx