是这样的,我们有 A 和 B 两个项目,在 A 项目里面需要只读地访问 B 项目的数据库。A 和 B 项目都有一个类叫 Resource,但是他们对应的数据库不是一个,只是同名。
现在在 A 项目里面,有下面的代码:
module B
class Base < ActiveRecord::Base
end
end
module B
class Resource < Base
belongs_to :resourceable, polymorphic: true
end
end
module B
class Stuff < Base
has_many :resources, as: :resourceable
end
end
在执行:
Stuff.includes(:resources).where(id: [1,2,3]).to_a
的时候,SQL 语句是这样的:
select * from stuff where id in (1,2,3);
select * from resources where resourceable_id in (1, 2, 3) and resourceable_type = "B::Stuff";
最后一个 SQL 语句,是带有 namespace 的,但是此数据在 B 项目里面是不带有B::
的。如何做到查询不带 namespace 呢?这种情况如何破?希望大家指点一二。
谢谢