所以我正在尝试实现一个模型来触发我的rails应用程序中可能发生的各种事件。
我想要它做的一些示例代码。
Action.trigger_on("channel1")
上面的代码将由以下触发:
Trigger.trigger("channel1")
但是,如果我只想为给定的一组参数触发动作,我可以传递一个哈希
Action.trigger_on("channel1", {important: true, is_transfer: true})
上述动作只会由“channel1”上的 channel1 上的东西触发,而且它必须是important: true
,而且它必须是is_transfer: true
。
因此这不会触发它,因为它没有 is_transfer:
Trigger.trigger("channel1", {important: true})
但这会
Trigger.trigger("channel1", {important: true, is_transfer: true})
现在触发器是一个包含这些参数的“属性”子文档的文档。如何找到与所有参数的子集匹配的所有触发器?或者也许有更好的方法来改进这种建模?
愚蠢的做法是找到与通道匹配的所有触发器,然后遍历它们以检查当前触发器是否具有所有所需的属性......
编辑:另外,我想重要的是要注意动作的触发并不是那么关键。