使用DataMapper访问来自不同模式/用户的表

时间:2012-05-02 08:19:00

标签: ruby-on-rails oracle schema jruby datamapper

目前我正在使用DataStper使JRuby on Rails应用程序访问Oracle数据库。我想知道是否有一个配置/例程来访问来自不同用户/模式的表,如:

SELECT * FROM "SCHEMAXY"."TABLEXY";

我已经通过指定模式和表名来实现了这项工作,但我怀疑这是一个很好的解决方案。

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

(ISH)

# 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中有一个集成的解决方案。

1 个答案:

答案 0 :(得分:1)

如果您可以执行SQL ALTER SESSION命令,则以下内容将起作用&允许您在SCHEMAY中使用不合格的表名:

ALTER SESSION SET CURRENT_SCHEMA=SCHEMAXY;

如果无法做到这一点,您可以创建SYNONYM

CREATE SYNONYM TABLEY FOR SCHEMAY.TABLEY;