レガシー データベースの上に Rails プロジェクトを開始しました。各テーブルへの ID フィールドの割り当てなど、ORM を使用するために必要な標準的な方法が守られていません。したがって、すべてのテーブルに一致するすべてのモデルを作成するわけではありません。多数の条件を使用して、複数のテーブルを結合するクエリを実行する必要があります。私は主に Model.find_by_sql または Model.connection.select_all メソッドを使用します。これらのクエリはどこに置くべきですか? クエリに関係する、作成したモデルの 1 つにこれらを隠しておく必要がありますか? そのような状況の標準的な慣行は何ですか?
質問する
360 次
2 に答える
1
可能な限り、クエリなどをモデル レイヤーに配置して、アプリケーションの残りの部分をデータベースの詳細から隔離したいと考えています。そうです、あなたがやろうとしていることに関連する正しいモデルオブジェクトに「隠しておく」ことは正しいことのようです。
データベースのスキーマを変更できますか? その場合、移行を使用して、データベースを標準の ActiveRecord バッキング ストアのようにゆっくりと見せることができます。
また、 Sequelなどの ActiveRecord の代替を検討することもできます。
于 2013-04-22T07:51:57.020 に答える
-1
db の下の sql フォルダーの下に sql クエリを配置することをお勧めします。sql フォルダーを作成する必要があります。
于 2013-04-22T07:18:24.443 に答える