Rails 中是否可以跨多个数据库进行内部联接?

2024-05-26

我很难使用has_many :through关联,其中一些表位于单独的数据库中。

# database_one
class Input < ApplicationRecord
  belongs_to :user      # Works great
end

# database_two
class User < AbstractClass
  belongs_to :group     # Works great
  has_many :inputs      # Works great
end

# database_two
class Group < AbstractClass
  has_many :users                     # Works great
  has_many :inputs, through: :users   # Does not work at all
end

class AbstractClass < ApplicationRecord
  self.abstract_class = true
  establish_connection "database_two_#{Rails.env}".to_sym
end

因此,使用上面的代码,我可以执行以下操作:

Group.first
=> #<Group id: 1...

User.first
=> #<User id: 1...

User.first.inputs
=> #<ActiveRecord::Associations::CollectionProxy []>

Group.first.users
=> #<ActiveRecord::Associations::CollectionProxy []>

但它不会让我执行以下操作:

Group.first.inputs
ActiveRecord::StatementInvalid: PG::UndefinedTable: ERROR:  relation "users" does not exist
LINE 1: SELECT  "inputs".* FROM "inputs" INNER JOIN "users" ON "inpu...
                                                ^
: SELECT  "inputs".* FROM "inputs" INNER JOIN "users" ON "inputs"."user_id" = "users"."id" WHERE "users"."group_id" = $1 LIMIT $2

看起来不可能做INNER JOIN跨两个数据库?我可以做些什么来缓解这种情况吗?我尝试将此方法添加到AbstractClass但不幸的是它没有解决任何问题:

def self.table_name_prefix
  "database_two_#{Rails.env}."
end

作为解决方法,我已将以下内容添加到组模型中,但这不是我正在寻找的解决方案。

def inputs
  Input.where(id: users.ids)
end

我认为不可能在一个查询中连接两个不同的表。您可能可以做的是使用 Ruby 来获得最终的集合。 使用一个查询从一个数据库获取集合,然后从另一个查询获取另一个集合。 然后使用 Ruby 从这两个集合中进行选择/过滤。我希望这可以帮助你。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Rails 中是否可以跨多个数据库进行内部联接? 的相关文章

  • 如何创建与 ActiveResource 对象的 ActiveRecord 关系?

    假设我正在为一家已经拥有 People 应用程序的出版公司编写一个图书馆应用程序 所以在我的图书馆应用程序中我有 class Person lt ActiveResource Base self site http api people m
  • HABTM 关系和accepts_nested_attributes_for

    我有一个可以让我创建的表单新博客文章我希望能够创造新类别来自同一个表格 我在帖子和类别之间有一个习惯关系 这就是我遇到麻烦的原因 我有以下2个型号 class Post lt ActiveRecord Base has and belong
  • 在 Rails 中禁用连接池以使用 PgBouncer

    我们有一个 Ruby on Rails 4 2 8 项目 可以访问大型 PostgreSQL 数据库 我们将使用 PgBouncer 添加一个新的连接池服务器 由于 PgBouncer 将处理数据库连接池 我们是否需要关闭 Rails 自动
  • save_and_open_page 已停止提供我的 CSS

    我的测试设置工作得很好 每当我打电话时 都能提供正确格式的 css 页面save and open page从测试中 然后 我设置了一些 javascript 测试 并对我的设置进行了一些更改 抱歉 我无法详细说明所有内容 我没有足够详细地
  • Google Cloud SQL - Postgresql 存储不断增长

    我最近开始修补 Google Cloud SQL PostgreSQL 我创建了一个空数据库 在 4 5 天的时间里 其存储使用量已增长到超过 20GB 它一直在上升 但数据库中没有数据 它甚至没有被使用 有谁知道会发生什么以及如何阻止它
  • Rails 3:使用 Simple_form 如何创建一个向specialities#create 发布帖子的表单?

    如何使用 Simple form 创建一个向specialities create 发布帖子的表单 我试过这个
  • 在 Web 应用程序中显示最新的提交值?

    我有一些 Rails 应用程序 我使用 Git 作为版本控制系统 我使用 GitHub 或 Beanstalk 作为存储库主机 从理论上讲 我想要做的事情非常简单 以某种方式在 Web 应用程序的页脚中显示最新的提交 ID 号 哈希值 这样
  • 回滚后是否应该删除迁移

    我对 ruby 和 Rails 相当陌生 刚刚开始了解迁移 我的问题是回滚后删除迁移的最佳实践或正确时间是什么 到目前为止 我读到的内容是回滚后是否删除迁移的观点问题 但是在团队中工作时删除迁移是否有任何重大影响 以及保留迁移文件相对于删除
  • 为什么 Rails 中的区域设置充当全局(使用 Thin 时)?

    我刚刚意识到在控制器中设置区域设置的推荐 Rails 方法 before filter set locale def set locale I18n locale params locale I18n default locale end
  • Rails 从 OrdersController 更新用户模型的属性

    这是我的代码 订单控制器类 def create order Order new params order if order purchase work GATEWAY store credit card options result wo
  • wal_keep_segments 为什么是最小值而不是最大值?

    根据docs http www postgresql org docs current static runtime config replication html wal keep segments integer 指定过去日志的最小数量
  • Rails - 安装 Spree 时出现问题

    我在 Rails 应用程序中安装 Spree 时遇到问题 当我运行 gem spree 时 按照说明http spreecommerce com documentation getting started html http spreeco
  • 如何使用 Ruby on Rails 3 检查 HTTP 请求的“Content-Length”字段?

    我正在使用 Ruby on Rails 3 在我的视图文件中我有以下代码 为了避免服务器过载 我会在服务器接收上传文件之前检查上传文件的大小 这是因为 按下表单的提交按钮 服务器会先完整接收文件 然后再检查文件 我知道一个HTTP 请求有标
  • 检查 postgres 复制状态

    有人可以建议检查 postgresql 复制状态的步骤以及如何确定复制是否未正确进行吗 我们在 pgsql9 0 和 pgsql9 4 中使用流复制 我通常使用以下 SQL 查询来检查 Postgres v11 的状态 关于主人 selec
  • 使用redirect_to :create 动作

    我正在尝试重定向到另一个控制器的创建方法 但是 我找不到将方法设置为 POST 的方法 这将导致调用索引方法 使用 method gt post只是创建一个新参数 但不会更改 http 方法 有什么想法如何重定向到创建方法吗 您无法在重定向
  • 使用间隔阈值对不同的连续时间戳记录进行分组

    我有一系列间歇性间隔的带有时间戳的 GPS 坐标 我正在使用 PostGIS 将它们渲染到地图画布上 为了渲染它们 需要使用 PostGIS 中的 ST MakeLine 聚合函数将点聚合成线 从而在地图上留下 GPS 数据丢失的间隙 数据
  • 在 postgres 查询中使用列表

    我有一个动态列表 list a b c d 所以长度可能会改变 我想在查询中比较这些列表值 select from student where name in all the list values 我想将列表值传递到此查询中 我怎样才能做
  • Postgres 中的输出 Inserted.id 等效项

    我是 PostgreSQL 新手 正在尝试将 mssql 脚本转换为 Postgres 对于合并语句 我们可以使用冲突更新插入或不执行任何操作 但我使用下面的语句 不确定这是否是正确的方法 MSSQL代码 Declare tab2 New
  • 即使删除了某些行,使用种子值进行随机排序也会再次返回相同的集合吗?

    我正在编写一个分页 API 通过设置随机种子值来给出随机结果 除非用户想要洗牌结果 否则结果将是相同的 但如果用户想要洗牌 我将重新创建种子值 以便它将返回一组不同的记录 我的问题是 如果我从数据库中删除一条记录 即使种子相同 由于元素长度
  • 用于验证目的的动态查找方法

    我正在使用 Ruby on Rails 3 0 7 我想在运行时查找一些记录以进行验证 但为该查找方法传递 设置一个值 也就是说 在我的班级中 我有以下内容 class Group lt lt ActiveRecord Base valid

随机推荐

  • 如何从横滚、俯仰和偏航获取相机向上矢量?

    我需要从滚动角 俯仰角和偏航角 以度为单位 获取相机的向上矢量 以获得正确的外观 我已经尝试了几个小时不同的事情 但没有运气 这里的任何帮助将不胜感激 横滚 俯仰和偏航定义 3 轴旋转 从这些角度 您可以构建一个 3x3 变换矩阵来表达该旋
  • Android 7 GraphicBuffer 替代方案,用于直接访问 OpenGL 纹理内存

    从移动设备具有 CPU 和 GPU 共享内存这一事实中获利的唯一方法是使用GrphicBuffer 但由于 Android 7 限制对私有本机库 包括 gralloc 的访问 因此无法再使用它 问题 是否有其他方法可以直接内存访问纹理的像素
  • Java Swing 自定义形状(2D 图形)

    我需要绘制自定义形状 现在 当用户单击面板上的几个点时 我使用多边形创建一个形状 public void mouseClicked MouseEvent e polygon addPoint e getX e getY repaint 但我
  • 创建UML图时应该编写构造函数吗?

    我有一项作业要求我为实际的 Java 程序创建 UML 图 但程序中有几个构造函数方法 我很困惑 我是否应该将这些构造函数方法添加到图中 根据 UML 规范 2 5 版第 11 4 4 节 构造函数是一个具有所属类类型的单个返回结果参数的操
  • 预览来自 url 输入的图像

    我有这段代码 从 url 预览图像 它工作得很好 除了它仅在用户单击输入框外部时运行 我如何更改它 以便在将值放入输入框中时它会立即运行 我需要立即显示图像 我想我需要改变onblur to onchange但我尝试改变它 但没有成功
  • ASP.NET ascx 与 aspx - 您是否重用用户控件?

    我们的团队正在开发一个相当大的 ASP NET Web 项目 该项目最初从 ASP NET 1 0 开始 并多次移植到所有新版本的 NET 我们广泛利用了用户控件 ascx 但现在回想起来 我怀疑这是一个好的决定 这些控件中的一小部分可以通
  • 在经典 ASP 中使用 Response.Write 进行调试

    我正在尝试使用调试一些代码Response Write 但是当我运行代码时 它会跳过该语句并在代码中的某个位置出现错误 我怎样才能得到我的Response Write语句来显示而不会出现其他错误 我经常使用Response End当我必须查
  • 如何使用相对路径链接到另一个本地文件?

    这是一个非常基本的 html 问题 但我似乎找不到答案 我有一个本地文件位于此处 Users Me Desktop Main June foo txt 在位于 Main 目录中的 html 文档中 我可以链接到foo txt使用完整路径的文
  • 如何为 eclipse 添加更多语法元素

    我正在尝试添加更多语法元素Zend Studio为了日食 我想更改等号的颜色 但它没有列出 所以我可以更改它 您可能想投票给http bugs eclipse org 213992 http bugs eclipse org 213992因
  • Flexbox:元素阴影不适用于 order 属性

    我正在尝试使用 CSS3 的 Flexbox 功能创建一个简单的布局 但遇到了一个问题 我无法放置我的阴影nav元素在main元素即使nav元素位于main 我尝试使用order属性 但我不明白为什么nav的影子在下面main html h
  • GridView 仅显示第一个检索到的记录

    我成功地从数据库中检索了我需要的所有记录 但是只有一条记录显示在我的数据库中GridView 在过去的几天里我一直在尝试解决这个问题 因为我没有其他选择可以尝试 所以我真的很沮丧 我迫切需要一些帮助 我尝试操作查询 因为我最初认为这是问题所
  • 如何使用 Promise.all 获取 URL 数组?

    如果我有一个 url 数组 var urls 1 txt 2 txt 3 txt these text files contain one two three respectively 我想构建一个如下所示的对象 var text one
  • 从日志文件 python 创建 csv 标题

    我的日志文件每行都包含一些信息 如下所示 Info1 NewOrder key 123 Info3 10 Info5 abc Info3 10 Info1 OldOrder key 456 Info6 xyz Info1 NewOrder
  • 将图像加载到现有 Mat 中

    有没有办法将图像加载到现有的 Mat 中 如果没有 有没有办法控制 OpenCV 在调用 cv imread 时分配内存的位置 我只是为您的类创建一个构造函数 该构造函数接受 imread 的输入参数并将图像直接加载 并分配 到您的类中 所
  • 关于 Google Apps 在 Gmail 邮件正文中编写内嵌图像脚本

    所以我有一封电子邮件草稿 如下所示 and this is how my email looks after mailing it I can find those images in email as attachment like th
  • 同步不同数据库的2个表-MySQL

    我在数据库表中有一个包含某些医疗信息的表 我每天抓取并解析它们并将其存储在本地数据库的表中 假设最初有 1500 条记录 今天我的本地计算机上又添加了 100 条记录 现在 我有一个服务器 我需要在其中推送这些记录 因此数据库是不同的 我昨
  • 如何在 Linux 中重新添加 unicode 字节顺序标记?

    我有一个相当大的 SQL 文件 它以 FFFE 的字节顺序标记开头 我使用 unicode 感知的 linux 分割工具将此文件分割成 100 000 行块 但是当将这些传递回窗口时 它确实not与第一个部分以外的任何部分一样 只是它具有
  • Shared Web Workers 是否会在单页重新加载、链接导航中持续存在

    共享网络工作者 http www whatwg org specs web apps current work shared workers introduction旨在允许来自同一站点 来源 的多个页面共享单个 Web Worker 但是
  • CreationException:无法在 Play 2.5.18 中创建注入器错误,以使用 com.google.inject.AbstractModule 替换 GlobalSettings Java 代码

    我正在将 Play 应用程序从 2 5 12 升级到 2 5 18 当我启动该应用程序时 使用sbt 我收到此错误 CreationException 无法创建注入器 看到以下错误 1 Error injecting constructor
  • Rails 中是否可以跨多个数据库进行内部联接?

    我很难使用has many through关联 其中一些表位于单独的数据库中 database one class Input lt ApplicationRecord belongs to user Works great end dat