我想我要完成的是多表继承,但我不知道如何正确地实现它。Rails活动模型继承
我想从基类Device
开始,它将包含所有常用字段,如名称和启用。
class Device
# in app/models
# Fields
# String name
# boolean enabled
end
我然后要为不同的设备类型如Light
从Device
class Light < ActiveRecord:Base
# in app/models
# Fields
# String type
include Device
def on
raise NotImplementedError
end
def off
raise NotImplementedError
end
end
继承然后我将具有适用于特定装置如X10Light
和ZWaveLight
将定义的类创建抽象类每个设备的具体细节并实现抽象方法。然后
class X10Light < Light
# in app/models
# Fields
# String serial_number
def on
# fully implemented on method
end
def off
# fully implemented off method
end
end
我的目标是使用它像下面
light1 = X10Light.new
light1.serial_number = "x1"
light1.save
light2 = ZWaveLight.new
light2.serial_number = "z1"
light2.save
all_lights = Light.all
all_lights.each do |light|
light.off
end
我想我已经计划好了的事情,这是可能的方式,但我觉得有一些不正确的执行。我会很感激任何帮助减少这方面的细节。谢谢!
在红宝石中,不要做'def on raise NotImplementedError end' ---而是让你的类不是'respond_to:on'。 – 2013-04-20 18:14:31