gpt4 book ai didi

ruby-on-rails-4 - 在模型回调上触发 Rails Controller 中的操作

转载 作者:行者123 更新时间:2023-12-04 07:00:37 25 4
gpt4 key购买 nike

我想把我的头绕在Live Streaming在 Rails 中使用服务器发送的事件。我有一个 Rake 任务监听将记录添加到数据库的文件更改。添加后,我想向前端发送一个 SSE。

但是,模型不能向前端发送事件, Controller 负责。我如何告诉我的 Controller 一个新记录被添加到数据库中?

到目前为止我的(损坏的)解决方案:使用 EventBusafter_save宣布更改并要求 Controller 监听这些消息的模型中的回调:

require 'reloader/sse'
class SseController < ApplicationController
include ActionController::Live

def index
response.headers['Content-Type'] = 'text/event-stream'
sse = Reloader::SSE.new(response.stream)
EventBus.subscribe(:added) do |payload|
sse.write({ /* payload */ })
end
rescue IOError
ensure
sse.close
end
end

我认为我的请求在收到事件之前就结束了,这意味着它永远不会在取消订阅块中结束。这是正确的方法,如果是这样,我错过了什么?

最佳答案

SOLN 1:您可以使用 rest_client gem 在模型的 after_save 回调中向您的 Controller 发送请求。

SOLN 2:为什么不在 Controller 中调用模型方法来创建数据库记录,然后根据是否创建记录来处理进一步的操作

关于ruby-on-rails-4 - 在模型回调上触发 Rails Controller 中的操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24509723/

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