2012-05-02 86 views
2

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

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的综合soloution。

回答

1

,如果你可以执行ALTER SESSION命令下面一个SQL将工作&让您在SCHEMAY使用不合格的表名:

ALTER SESSION SET CURRENT_SCHEMA=SCHEMAXY; 

如果这是不可能的,你可以创建一个SYNONYM

CREATE SYNONYM TABLEY FOR SCHEMAY.TABLEY;