gpt4 book ai didi

ruby-on-rails - 有没有什么方法可以在不查询/少查询的情况下了解数据库更新?

转载 作者:行者123 更新时间:2023-11-29 11:29:13 27 4
gpt4 key购买 nike

我遇到了一个奇怪的问题,正在寻找我能在这里找到的最佳解决方案。我正在开发一个 Rails 应用程序,它显示来自另一个应用程序(nodejs)正在使用的公共(public)数据库的数据。所有 CRUD 操作都发生在另一个平台上。在 Rails 应用程序中,我们只是查询和显示数据。

在 Rails 应用程序中,我需要在不刷新的情况下自动更新 View 。例如

def index
@states = State.page(params[:state_page])
@level_one_companies = Company.includes(:state)
.where(level: 1)
.order('created_at DESC').limit(20)

@level_two_companies = Company.includes(:state)
.where(level: 2)
.order('created_at DESC').limit(20)
end

在索引页面上,我将为这些中的每一个都有表格,当新数据添加到州(或)1 级(或)2 级公司时,我需要刷新表格。

我知道我可以通过两种方式自动更新 View ,即

  1. Action 电缆。
  2. 使用 Jquery 按时间间隔汇集数据。

通常在使用 Action Cable 时,我们会在数据库中创建记录后从服务器广播数据(在创建操作中的 .save 之后(或)来自模型的 after_save 回调)。但是,我没有通过 Rails 应用程序创建任何记录。

我的第一个问题是,在这种情况下有没有办法使用 Action 电缆?

所以我选择了第二个选项,它工作正常。但是它每隔 X 秒就会进行太多次数据库调用。有什么办法可以减少更新 View 的查询吗?我可以在这里使用的最佳方式是什么?非常感谢任何帮助。谢谢。

最佳答案

如果您的标签设置正确,那么您正在使用 postgres 作为数据库。

postgres 提供了一种发布-订阅机制,您可以将其与 action-cable 结合使用,以监听数据库中的变化。

this gist ,您可以找到带有服务器发送事件的 postgres-pubsub 示例。将其转换为 Action 电缆兼容代码应该很简单。

关于ruby-on-rails - 有没有什么方法可以在不查询/少查询的情况下了解数据库更新?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46725169/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com