Ruby on rails 在rails应用程序中查询不同的模式数据以进行读取+;写

Ruby on rails 在rails应用程序中查询不同的模式数据以进行读取+;写,ruby-on-rails,ruby,apartment-gem,Ruby On Rails,Ruby,Apartment Gem,我有两个rails应用程序base1和base2 base1使用db1并在此数据库中有多个租户,其使用的是公寓gem base2是单租户应用程序,以数据库db2为主,还使用来自db1的数据 现在问题是,base2应用程序与db1建立了连接,我可以在base2应用程序中获取公共租户中的数据db1数据。如何从base2应用程序中的db1的不同模式中获取数据?根据评论中的讨论 def self.with_schema(schema_name) class_name = self.name +

我有两个rails应用程序
base1
base2

base1
使用
db1
并在此数据库中有多个租户,其使用的是公寓gem

base2
是单租户应用程序,以数据库
db2
为主,还使用来自
db1
的数据


现在问题是
base2
应用程序与
db1
建立了连接,我可以在
base2
应用程序中获取公共租户中的数据
db1
数据。
如何从
base2
应用程序中的
db1
的不同模式中获取数据?

根据评论中的讨论

def self.with_schema(schema_name)
    class_name = self.name + schema_name.camelize
    table_name = self.table_name
    if !Object.const_defined?(class_name)
      Object.const_set(
        class_name, Class.new(self) do
          self.table_name = "#{schema_name}.#{table_name}"
        end
      )
    end
    class_name.constantize
  end

将此添加到应用程序记录中,您可以执行以下操作:
Data.schema(“schema_name”)。所有

您是否经常需要更改
base2
应用程序模型中的架构?另外,db1和db2是否共享任何表名?我想我可以帮你,但我需要更多的细节。此外,是否有任何写入操作正在从base 2应用程序对db1执行?base 2是一个单租户应用程序,用于从base1应用程序(一个多租户应用程序)获取数据。我不想更改base2应用程序的架构,因为它有自己的架构。不,我想你没有理解我的评论,让我重新措辞。当您从
base2
访问
db1
时,您希望告诉它在特定的模式中查找特定的表(不公开)。所以我的问题是,当从base2访问db1时,您需要从不同的模式访问相同的表数据,还是只需要从一个模式访问数据?我的第二个问题是,如果您需要从base2 app对db1进行任何写入。对不起。现在我收到了您的评论。我一次只需要一个模式中的数据。我还想从base2 appOk在db1上编写,有一个table_name选项,您可以将它设置为模型中特定的内容,比如
self.table_name='schema_name.table_name'
,但这将强制对所有查询使用相同的模式。这对你有用吗?还是每次查询时都想调整模式?是的!!!!这起作用了,。。。。非常感谢`Data.with_schema('schema_name')。都像方法名。当我将其添加到应用程序记录中时,它不起作用,但当我将其添加到特定模型中时,它起作用了。。。。我想出来了!。。。这将在添加到应用程序记录时起作用。在我的情况下,该模型是从第二个数据库模型继承的(因为我使用的是多个数据库),我应该添加到它从中继承的记录。。。再次感谢!!!:)当我在应用程序记录中添加它时,这对我来说是有效的(id甚至没有在单个模型中添加它)。你的应用程序中可能会出现一些不同的情况。当然,你必须适应你的环境@阿披实卡拉文丹