1

Oracleデータベースを使用してRoRプロジェクトを開発しています。最近、別のデータベースにDBLinkを追加しましたが、これはSQLからのみ完全に機能します。次のコードを使用してテーブルをクラスに追加する場合...

class ServerModel < ActiveRecord::Base 
  set_table_name "S985.S985_947_MODELS_VW@R985_A947.WORLD"
  set_primary_key "model_barcode"

  acts_as_reportable
  acts_as_entity
end

...このエラーが発生します:

NativeException: java.sql.SQLException: ORA-02084: database name is missing a component
: select * from (SELECT "S985"."S985_947_MODELS_VW"@"R985_A947"."WORLD".* FROM "S985"."S985_947_MODELS_VW"@"R985_A947"."WORLD"  ) where rownum <= 14

もちろん、この自動的に使用されるクエリは機能しません。dblink(@ R985_947.WORLD)の名前を複製せずに、選択するのではなく"S985"."S985_947_MODELS_VW"@"R985_A947"."WORLD".*、単に選択する必要があります。"S985"."S985_947_MODELS_VW".*

これは、このset_table_name方法または他のActiveRecord方法で可能ですか?

答えは簡単に見えますが、解決策が見つかりません。誰かがこの問題で私を助けることができますか?

ありがとう!

4

2 に答える 2

1

Active Record を微調整して DB リンク名を含めるかどうかはわかりませんが、次のようなリモート テーブルのビューを作成するのはどうでしょうか。

create or replace view S985_947_MODELS_VW
as
select * from S985_947_MODELS_VW"@"R985_A947"."WORLD"

そして、ROR アプリケーションでビューにアクセスするだけですか? ビューを挿入、更新できるかどうかは不明です。確認する必要があります。「単純な」ビュー(つまり、グループ化されていない単一のテーブル上のビューなど)を更新して挿入できると感じています。

于 2011-08-10T15:30:59.590 に答える
0

establish_connectionお探しのものはありますか?

http://apidock.com/rails/ActiveRecord/Base/establish_connection/class

これを使用して、選択したモデルのクラス固有の接続を設定できます。

于 2011-08-10T15:09:51.653 に答える