1

私は RoR アプリを作成しており、会社の MySQL データベース (このアプリ自体とは関係ありません) に接続して、データを収集し、RoR アプリを通じて報告する必要があります。このデータベースに接続する慣用的な方法は何ですか? そこからかなり軽量なselectクエリを実行するだけですが、多くの場合、テーブル結合が含まれます。これは RoR アプリではなかったので、接続する必要がありますか?

4

1 に答える 1

1

クエリの大部分が単一のテーブルにバインドされている場合、または少数の結合のみを使用している場合は、それらのモデルを実際に定義できます。ActiveRecord がそれらを操作できるようにすることは、Rails 内でそれを行うための最も慣用的な方法のように思われます。

まず、会社のデータベースをdatabase.yml

class ExternalDbTable
  # Connect to the db
  establish_connection :connx_from_database_yml

  # Define table if this query is bound to a single table
  set_table_name 'ext_db_table'
  set_primary_key 'pk_column'
end

そこからnamed_scope、Rails モデルの場合と同じように s を定義し、基本的に ActiveRecord のすべての利点を享受できます。外部データベースのいくつかのテーブルにアクセスする必要がない場合has_many/belongs_toは、ActiveRecord で通常行うように、それぞれにモデルを作成し、関係を定義できます。ただし、テーブルが多数あり、外部データベースでビューを作成できる場合は、結合を実行するビューを指すモデルを作成できます。次にnamed_scope、必要に応じてビューに対して s を定義します。

于 2012-08-20T15:18:06.400 に答える