在我的Rails应用程序中,我遍历一个数组以创建必须由OR连接的条件列表。以下是我目前的基本流程。
conditions = nil
set.each do |value|
condition = value.to_condition
conditions = conditions ? conditions.or(condition) : condition
end
显然,它并不漂亮,但我仍然不完全了解Arel的方式。它是否提供了更好的OR加入一组动态生成条件的方法?
答案 0 :(得分:12)
这是inject
的完美契合,它可以为你提供一个你可以在其他东西中使用的单行:
conditions = set.inject { |conds, cond| conds.or(cond) }
甚至可以写成:set.inject(&:or)
非常好。
答案 1 :(得分:1)
答案 2 :(得分:0)
我认为基本上就是这样。我将条件初始化为基础对象以避免三元:
scope = Article
set.each{|v| scope = scope.or(v.to_condition)}