Arel:从值数组动态生成条件

Arel: Dynamically generate conditions from array of values

我正在寻找为 Rails 应用程序中的查询生成“或”条件,从我想尝试 match 对单个列中的值的单词数组,在阿雷尔。我正在尝试遵循 very similar SO question with a good answer.

中的建议

但是那个问题中的 OP 没有解释 value.to_condition 他将自己的价值观转化为条件的方法。基本上我不明白如何将每个单词字符串变成可链接的 Arel 条件。

当链接 SQL 查询字符串时,这种事情对我来说很容易理解,但在 Arel 中,我不知道如何在不执行条件的情况下链接条件 — 条件是直接的 Ruby.

在下面,patterns是我的单词数组。每个条件都应表述为 Table.arel_table[:text].matches(pattern),我希望这些条件中的每一个都与 .or

连接
conditions = patterns.inject { |conds, cond| cond.or(conds) }

虽然我尝试这样做,但我不明白链接是否或如何工作。

conditions = patterns.inject do |conds, cond|
  Table.arel_table[:text].matches(pattern).or(conds) 
end

哎呀 - 使用 Arel 非常简单。

Table.where(Table.arel_table[:text].matches_any(patterns))

我仍然想了解有关链接 Arel 条件的更多信息。