acts_as_foo
構文**ではなく、ActiveSensor::Base < ActiveRecord::Base
この基本クラスを拡張してから、すべてのエラー/検証/クラス メソッド/奇抜な機能を使用して拡張するというアイデアをいじっています。
提案: #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?
メソッドを使用してハードウェアであるかどうかを確認したい。
短所: 追加の継承クラス レイヤーをメモリに保持する... 独立して使用されることはなく、あまり一般的ではありません (これを行う他の Rails プラグインは 1 つしか見られません)。
何かアドバイス?新しい ::Base クラスを作成するのはばかげていますか? もしそうなら、なぜですか?
** acts_as_foo
Rails gem で共通のパターンです。このクラス メソッドはすべての AR オブジェクトに追加され、クラスのロード時にクラスおよびインスタンス メソッドをロードおよび拡張します。