gpt4 book ai didi

ruby-on-rails - 在 Ruby 中指定和执行规则

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

我正在寻找可以帮助我完成以下任务的 Ruby/Rails 工具:

我想在我的数据库中存储以下字符串以及与之类似的字符串。当创建、更新、删除对象等时,我想遍历所有字符串,检查 CRUD 事件是否与字符串的条件匹配,如果是,则运行指定的操作。

When a new ticket is created and it's category=6 then notify user 1234 via email

我打算创建一个构建这些字符串的接口(interface),因此它不需要是人类可读的字符串。如果 JSONish 结构更好,或者工具具有现有语言,那就太好了。我有点在想一些事情:
{
object_types: ['ticket'],
events: ['created', 'updated'],
conditions:'ticket.category=6',
actions: 'notify user',
parameters: {
user:1234,
type:'email'
}
}

所以基本上,我需要以下内容:
  • 监控 CRUD 事件 - 如果该工具有办法做到这一点,那就太好了,但是如果该工具本身没有提供它,我可以在这里使用 Rails 的 ModelObservers
  • 查找所有匹配的“规则” - 这是我的主要未知数...
  • 执行请求的方法/参数 - 理想情况下,这将在我的 Ruby 代码中定义为类/方法

  • 有没有我应该调查的现有工具?

    编辑:

    感谢您到目前为止的回复!我真的很感谢你指出我正确的道路。

    这里的用例是我们有许多不同的客户端,有许多不同的业务规则。对于适用于所有客户端的规则,我可以轻松地在代码中创建它们(使用类似于 Ruleby 的东西),但对于所有特定于客户端的规则,我想将它们存储在数据库中。理想情况下,规则可以编写一次,存储在代码或数据库中,然后运行(使用 Resque 来提高性能)。

    在这一点上,看起来我将不得不自己动手,所以任何关于最好的方法的想法,或者我应该研究的任何工具,将不胜感激。

    再次感谢!

    最佳答案

    我不认为自己写一些东西来做这件事是一件大事,我不知道有什么 gem 可以做到这一点(但如果有人写一个就好了!)

    我将通过以下方式处理该项目,我的想法是您不想在用户保存时进行规则匹配,因为这可能需要一段时间并且可能会中断用户体验和/或减慢速度服务器,所以...

  • 每次发生 CRUD 事件时,使用观察者来存储记录,或者使用 Acts as Audited gem 使事情变得更简单。它为你做这个。

  • 1.5。使用 rake 任务,从您的 crontab 运行以运行最新的更改,可能每分钟一次,或者您可以使用 Resque可以很好地处理大量工作
  • 创建一组表,定义用户可以从中选择的可能规则,可能类似于

  • 表:规则

    姓名

    ForEvent(例如 CRUD)

    问题表
  • FieldOneName
  • FieldOneCondition 等

  • 方法执行

    您可以使用一些元编程来执行您的方法,并且由于您的方法知道您的表名和记录 ID,因此可以获取它。

    附加说明

    最好的方法是从简单开始,然后向上工作。为了让简单版本首先工作,我会执行以下操作......
  • 安装行为已审核
  • 在创建的审计表中添加一个附加字段:when_processed
  • 在您的/lib 文件夹中为自己创建一个名为 processrules 的模块,大致执行此操作

    3.1 抓取所有未处理的审计条目
    3.2 将它们标记为已处理(可能此时再创建一个小型审计表来记录发生的事件)
  • 现在创建一个只有名称和条件语句的规则表,也许添加一些示例以开始

    姓名:第一 |规则语句:'SELECT 1 WHERE table.value = something'
  • 调整您的新 processrules 方法,为每个更改的条目执行该 sql(也许您想将其限制为您正在使用的表)
  • 如果规则匹配,请将其添加到您的日志文件中。

  • 从这里您可以推断出您需要的附加功能,并且可能会询问有关动态调用方法的元编程方面的另一个问题,因为这个问题非常广泛,非常乐意提供进一步的帮助。

    我倾向于认为进行任务处理的最佳方法是首先很好地设置流程,以便它可以在任何服务器负载和情况下工作,然后插入自定义位。

    关于ruby-on-rails - 在 Ruby 中指定和执行规则,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7208347/

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