我正在使用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
方法吗?
答案看起来很简单,但我找不到解决方案。有人可以帮我解决这个问题吗?
谢谢!
答案 0 :(得分:0)
establish_connection
您要找的是什么?
http://apidock.com/rails/ActiveRecord/Base/establish_connection/class
您可以使用它为您选择的模型设置特定于类的连接。
答案 1 :(得分:0)
不确定调整Active Record以包含DB Link名称,但是如何创建远程表的视图,如:
create or replace view S985_947_MODELS_VW
as
select * from S985_947_MODELS_VW"@"R985_A947"."WORLD"
然后只访问ROR应用程序中的视图?不确定是否可以插入,更新视图等 - 您需要检查它。我感觉可以更新并插入一个“简单”视图(即单个表上没有分组等)。