2011-08-10 16 views
0

私は、Oracleデータベースを使用してRoRプロジェクトを開発しています。最近私は別のデータベースにDBLinkを追加しました。これはSQLから完全に動作します。この自動的に使用されたクエリが動作しませんもちろんActiveRecordをdblinkからテーブルにアクセスさせるにはどうしたらいいですか?

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 

:私は次のコードで私のクラスにテーブルを追加したい ...

class ServerModel < ActiveRecord::Base 
    set_table_name "[email protected]_A947.WORLD" 
    set_primary_key "model_barcode" 

    acts_as_reportable 
    acts_as_entity 
end 

...私はこのエラーを取得します。 "S985"."S985_947_MODELS_VW"@"R985_A947"."WORLD".*は選択せず、"S985"."S985_947_MODELS_VW".*だけをdblink(@ R985_947.WORLD)の名前を複製せずに選択してください。

これはset_table_nameメソッドまたは他のActiveRecordメソッドで可能ですか?

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

ありがとうございます!

答えて

0

DBリンク名が含まれるようにアクティブレコードを微調整についてわからないが、何のリモートテーブルのビューを作成する方法について、のようなもの:

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

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

+0

ありがとうございます...あなたのソリューションはスムーズに動作します。 – Daan

+0

私はもう一つ問題があります:私のdefault_scopeに不正なクエリ文字列エラー '%'があります。私の方法は:default_scope:conditions => [["FULLNAME like '/ ITインフラストラクチャ/ハードウェア/サーバー/物理/ \%'またはFULLNAME '/ ITインフラストラクチャ/ハードウェア/その他/ \%'"] 私はワイルドカードとしての%。 – Daan

+0

named_scopeの舞台裏で生成されている実際のクエリ文字列を見ることができますか、それともそれがその点に到達する前にエラーが発生していますか? –

関連する問題