Arel:如何用OR干净地加入多个条件?

Mat*_*chu 10 ruby-on-rails arel ruby-on-rails-3

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

conditions = nil
set.each do |value|
  condition = value.to_condition
  conditions = conditions ? conditions.or(condition) : condition
end
Run Code Online (Sandbox Code Playgroud)

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

ein*_*nus 12

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

  • 我相信它创建了一个看起来像 (((c1 或 c2) 或 c3) 或 c4) 的条件。你知道是否可以将它们定义为(c1或c2或c3或c4)? (2认同)