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

当然,这个自动使用的查询不起作用。它不应该"S985"."S985_947_MODELS_VW"@"R985_A947"."WORLD".*只选择"S985"."S985_947_MODELS_VW".*,而不会重复 dblink (@R985_947.WORLD) 的名称。

这可以通过该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 应用程序中的视图?不确定是否可以插入、更新视图等 - 您需要检查一下。我有一种感觉,可以更新和插入一个“简单”视图(即单个表上没有 group by 等的视图)。

于 2011-08-10T15:30:59.590 回答
0

establish_connection你要找的吗?

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

您可以使用它为您选择的模型设置特定于类的连接。

于 2011-08-10T15:09:51.653 回答