而不是acts_as_foo
语法**,我正在玩弄ActiveSensor::Base < ActiveRecord::Base
扩展这个基类的想法,然后用所有的错误/验证/类方法/whizbangs扩展这个基类。
建议:#active_sensor.rb gem
module ActiveSensor
include ActiveRecord
autoload :VERSION, 'active_sensor/version'
autoload :ActiveSensorError, 'active_sensor/base'
autoload :Base, 'active_sensor/base'
autoload :Validations, 'active_sensor/validations'
end
优点:我认为它看起来更干净。体系结构和类构建模拟 ActiveRecord 我有很多子类化正在进行......想要使用:is_a?
方法检查组件是否是硬件。
缺点:在内存中持有一个额外的继承类层......从来没有独立使用过,不是很传统(只见过 1 个其他 rails 插件这样做)
有什么建议吗?创建一个新的 ::Base 类只是愚蠢的吗?如果是这样,为什么?
** 该acts_as_foo
模式在 Rails gem 中很常见。这个类方法被添加到每个 AR 对象中,它在加载类时加载和扩展类和实例方法。