如何在 rails 上的 ruby 中进行布尔搜索?
How to do Boolean search in ruby on rails?
任何人都可以向我推荐一些 link 或帮助我了解如何在 rails 上的 ruby 中进行布尔搜索的一些想法。
我想在搜索字段中使用布尔运算符,如下所示:
(A OR B) AND (NOT C)
(A OR (C AND D)) AND (NOT (F OR G))
参考:
boolean-basics-job search -- 这个 link 解释了布尔搜索。
但是如何在 rails 上使用 ruby 执行此搜索?
在 rails 的 ruby 中有什么方法可以做到吗?
希望这个clarifies.Thanks提前。
逻辑或 = ||
逻辑与 = &&
逻辑非=!或不()
(A || B) && !C
(A || (C && D)) && !(F || G)
我不确定您要使用 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)
任何人都可以向我推荐一些 link 或帮助我了解如何在 rails 上的 ruby 中进行布尔搜索的一些想法。
我想在搜索字段中使用布尔运算符,如下所示:
(A OR B) AND (NOT C)
(A OR (C AND D)) AND (NOT (F OR G))
参考: boolean-basics-job search -- 这个 link 解释了布尔搜索。
但是如何在 rails 上使用 ruby 执行此搜索?
在 rails 的 ruby 中有什么方法可以做到吗?
希望这个clarifies.Thanks提前。
逻辑或 = ||
逻辑与 = &&
逻辑非=!或不()
(A || B) && !C
(A || (C && D)) && !(F || G)
我不确定您要使用 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)