任何人都可以建议我一些链接或帮助我解决如何在轨道上的ruby中进行布尔搜索。
我想在搜索字段中使用布尔运算符,如下所示:
bsxfun
参考: boolean-basics-job search - 此链接解释了布尔搜索。
但是如何在rails上使用ruby实现此搜索?
有没有办法在轨道上的红宝石中做到这一点?
希望这可以澄清。谢谢。
答案 0 :(得分:4)
我不确定您是否想要使用SQL逻辑或Ruby逻辑。所以 Ruby逻辑
1. (A || B) && !C
2. (A || (C && D)) && !(F || G)
Rails ActiveRecord搜索(SQL)
Model.where('a = ? OR b = ?', a_value, b_value).where.not('c = ?', c_value)
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)
答案 1 :(得分:0)
逻辑OR = ||
逻辑AND =&&
逻辑NOT =!或不()
(A || B) && !C
(A || (C && D)) && !(F || G)