2017-03-17 14 views
1

誰かに私にいくつかのリンクを教えてもらえますか、またはルビーのレールで真理値検索をする方法についてのアイディアを教えてください。ruby​​ on railでブール検索を行う方法は?

私は1つ下のように検索フィールドにブール演算子を使用したい:

(A OR B) AND (NOT C) 

(A OR (C AND D)) AND (NOT (F OR G)) 

参考: boolean-basics-job search - このリンクはブール検索を説明します。

しかし、この検索をレール上でRubyで実装する方法はありますか?

ruby​​ on railでこれを行う方法はありますか?

これが明確になることを希望します。お早めに。

答えて

4

SQLロジックまたはRubyロジックを使用するかどうかわかりません。だから、 Rubyのロジック

1. (A || B) && !C 
2. (A || (C && D)) && !(F || G) 

RailsのActiveRecordの検索(SQL)もちろん

  1. Model.where('a = ? OR b = ?', a_value, b_value).where.not('c = ?', c_value)

  2. Model.where('a = ? OR (c = ? AND d = ?)', a_value, c_value, d_value).where.not('f = ? OR g = ?', f_value, g_value)

それは私より良いあなたがのためにスコープを作成した場合その方法。

class Model 
    scope :first_scope, ->(a_value, b_value) { where('a = ? OR b = ?', a_value, b_value) } 
    scope :second_scope, -> (c_value) { where.not('c = ?', c_value) } 
end 

そして

Model.first_scope(a_value, b_value).second_scope(c_value) 
+0

uはあまりにも私のActiveRecordのロジックで – user7348784

+0

そのをSQLロジックを伝えることができます。 ActiveRecordはそれをSQLに 'マッピング'していますが、ここで 'SELECT' some_table '。* FROM' some_table 'where a =' t 'OR(b =' t 'AND c =' f '))AND(d!=' t ') "' ARで生成されたSQLを表示したい場合、 'Model.first_scope(a_value、b_value).second_scope(c_value).to_sql'を使用できます。 – Argonus

0

論理OR = ||
論理AND = & &
論理NOT =!またはなし()

(A || B) && !C 

(A || (C && D)) && !(F || G) 
関連する問題