DB 間の SQL 構文の違いからさまざまな ActiveRecord オブジェクトを隔離することを意図していると思いますか?
クエリビルダーの設計で意図したものを正確に定義しませんでしたがAddSelection(colName)、AddCriteria(colName, ComparisonEnum, value)、 などのメソッドを一度使用しました。それがあなたのアプローチである場合、クエリが十分に小さい/単純な場合、クエリビルダーが機能します. しかし、複雑な結合や内部サブクエリを作成する機能が必要になるとすぐに、そのアプローチで壁にぶつかる可能性があります。
任意に難しいクエリを処理する必要がある場合は、コンバーターまたはトランスレーターを作成するという別のオプションがあります。正規のクエリ形式を定義する場合、各 DBMS 固有の変換は、その正規の形式から DB 固有の構文に変換する方法を認識します。ただし、努力する価値があるようにするには、この機能が本当に必要です。
最後に、他のアプローチは、各 DB の ActiveRecord をサブクラス化することです。したがって、EmployeeRecord クラスがある場合は、それを OracleEmployeeRecord、MySqlEmployeeRecord、MsSqlServerEmployeeRecord などでサブクラス化できます。次に、抽象ファクトリを使用して、適切な ActiveRecord オブジェクトを作成します。