如何在rails上的ruby中进行布尔搜索?

时间:2017-03-17 11:20:01

标签: ruby-on-rails boolean-logic

任何人都可以建议我一些链接或帮助我解决如何在轨道上的ruby中进行布尔搜索。

我想在搜索字段中使用布尔运算符,如下所示:

bsxfun

参考: boolean-basics-job search - 此链接解释了布尔搜索。

但是如何在rails上使用ruby实现此搜索?

有没有办法在轨道上的红宝石中做到这一点?

希望这可以澄清。谢谢。

2 个答案:

答案 0 :(得分: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)

  3. 当然,如果你为这些方法创建范围,那会更好。

    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)
    

答案 1 :(得分:0)

逻辑OR = ||
逻辑AND =&&
逻辑NOT =!或不()

(A || B) && !C

(A || (C && D)) && !(F || G)