2

現在、DataMapper を使用して JRuby on Rails アプリケーションを Oracle データベースにアクセスさせています。次のようなさまざまなユーザー/スキーマからテーブルにアクセスするための構成/ルーチンがあるかどうか疑問に思います。

SELECT * FROM "SCHEMAXY"."TABLEXY";

テーブル名と一緒にスキーマを指定することでこれを機能させるハックを実装しましたが、これが良い解決策であるとは思えません。

class Tablexy
  include DataMapper::Resource
  storage_names[:default] = "SCHEMAXY.TABLEXY"
end

ハック(っぽい)

# Replace a dot in the name by a quoted one
# so "NAMESPACE.TABLE" gets "NAMESPACE"."TABLE"
module DataMapper
  module Adapters
    class OracleAdapter
      def quote_name(name)
          super.gsub('.', '"."')
      end
    end
  end
end

DataMapper にこれに対する統合されたソリューションがあることを願っています。

4

1 に答える 1

1

SQL コマンドを実行できる場合ALTER SESSION、次のコマンドが機能し、 で修飾されていないテーブル名を使用できるようになりますSCHEMAY

ALTER SESSION SET CURRENT_SCHEMA=SCHEMAXY;

それが不可能な場合は、次を作成できますSYNONYM

CREATE SYNONYM TABLEY FOR SCHEMAY.TABLEY;
于 2012-05-02T14:54:00.770 に答える