12

私の Rails アプリでは、配列をループ処理して、OR で結合する必要がある条件のリストを作成します。以下は、私が現在行っている基本的な流れです。

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

明らかに美しくはありませんが、私はまだ Arel の使い方を完全には知りません。動的に生成された一連の条件を OR 結合するより良い方法はありますか?

4

3 に答える 3

14

これは、inject他の何かの中でも使用できるワンライナーを提供する conditions = set.inject { |conds, cond| conds.or(cond) }set.inject(&:or)最適です。

于 2010-09-07T18:39:35.387 に答える
1

このための便利なプラグインもあります。

条件_ヘルパー

複雑な条件を生成するのに役立ちます。

于 2012-07-17T11:24:19.417 に答える
-1

基本的にはそうだと思います。三項を避けるために、条件をベース オブジェクトに初期化します。

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