12

在我的 Rails 应用程序中,我循环遍历一个数组以创建一个必须由 OR 连接的条件列表。以下是我目前这样做的基本流程。

conditions = nil
set.each do |value|
  condition = value.to_condition
  conditions = conditions ? conditions.or(condition) : condition
end

显然,它并不漂亮,但我仍然不完全了解我在 Arel 周围的方式。它是否提供了更好的方法来加入一组动态生成的条件?

4

3 回答 3

14

这是一个完美的选择,inject它会给你一个单行,你可以在其他东西中使用: conditions = set.inject { |conds, cond| conds.or(cond) }甚至可以写:set.inject(&:or)非常好。

于 2010-09-07T18:39:35.387 回答
1

还有一个有用的插件。

conditions_helper

它有助于产生复杂的条件。

于 2012-07-17T11:24:19.417 回答
-1

我想基本上就是这样。我会初始化基础对象的条件以避免三元:

scope = Article
set.each{|v| scope = scope.or(v.to_condition)}
于 2010-08-22T12:53:27.007 回答