gpt4 book ai didi

ruby-on-rails - rails - postgres 用方法触发 Action ?

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

我正在创建一个新的 Rails 应用程序,它与我的 API 使用相同的 postgres 数据库。

API 和 APP 有几个通用模型。


例子:

API和APP有一个Connection模型

APP 将在数据库中创建一个简单的connection,API 将完成剩下的工作(比如使用connection 处理许多事情的处理程序)


所以我想使用 Hair Trigger允许触发数据库插入,或将其更新为将要执行的数据库行为。

但是我想从我的一个助手那里执行一个方法。

像那样:

class Connection < ActiveRecord::Base

trigger.after(:insert) do
SomeObject.method()
end

end

我不能使用 after_create 因为创建操作不是在同一个服务器(但同一个数据库)上完成的

有什么想法吗?

谢谢!

最佳答案

Hair Trigger之所以只支持SQL,是因为它的目的是帮助你维护数据库触发器(https://www.postgresql.org/docs/9.6/static/sql-createtrigger.html)。

数据库触发器与您的应用程序分离,只能在您的数据库中触发 SQL。 它实际上无法触发应用程序内部的任何代码。

您的问题的解决方案是使用事件。如果您曾经使用过 Javascript,您之前可能遇到过 Event 和 EventListener。事件的目的是解耦你的代码。当采取某项操作时,您的应用程序的一部分发送一个事件,例如一些东西被插入到数据库中。然后,您的应用程序的其他部分可以订阅这些事件并采取必要的行动。

由于您正在使用 Rails,我建议您仔细查看 Wisper gem (github.com/krisleech/wisper)。如果您的 App 和 API;就像您所描述的那样,生活在不同的进程(或服务器)中,您应该考虑使用后台 worker 来异步处理事件。一种常见的方法是使用 Sidekiq Wisper (github.com/krisleech/wisper-sidekiq),它使您能够使用 Sidekiq 作为后台 worker 来触发事件异步。

为了很好地介绍这个主题,这里有一份入门指南(我不是作者):http://www.g9labs.com/2016/06/23/rails-pub-slash-sub-with-wisper-and-sidekiq/

可能有更简单的方法来解决您面临的问题,但您需要发布更多有关用例的详细信息,以便我们为您提供更好的指导。

关于ruby-on-rails - rails - postgres 用方法触发 Action ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37484458/

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