私はどちらかを選択することに反対しました #1 :
class Abstract
end
class Abstract::Foo < Abstract
end
class Abstract::Bar < Abstract
end
対#2:
module Abstract
class Base
end
class Foo < Base
end
class Bar < Base
end
end
Abstract
名前空間のように感じたので、オプション#2を選択することになり、最終的には次のようなものを追加できました
module Abstract # Instead of class if I had used option #1
class SomeAbstractService
end
end
Abstract::Base.some_class_method
しかし、私は呼び出しが少し奇妙だと感じています。モジュール関数委任を追加することは可能ですか? たとえば、私Base
のモデルが ActiveRecord または Mongoid モデルの場合 (つまり、Foo と Bar は STI のようなものです)、コレクション/テーブルを次のようにクエリできるようにしたいと考えています。
Abstract.where(...)
それ以外のAbstract::Base.where(...)
.where
モジュール関数を定数/クラスに委譲することは可能Base
ですか?
何かのようなもの
module Abstract
class Base
end
delegate_module_function :where, to: :Base
end
または、それを行うための別の/より良い方法はありますか?