好的,我将尝试尽可能简单地解释这一点。
说我有3张特定表的记录。我们将这个表称为Objs,Objs具有字符串类型的属性,称为颜色(请注意它是如何复数的)。这是数据库中的3条假设记录及其相应的颜色值:
obj1 colors: "red, green, blue"
obj2 colors: "blue, orange, yellow, green"
obj3 colors: "teal, purple"
[好,现在说我希望能够找到一些有共同点的记录的子集(使用WHERE方法的一种好情况吧?)但是,我必须能够使用以下任一方法来搜索这些记录一个或什至multiple个值。例如:
说我的查询是"red, green".
然后,记录的结果集合将需要为obj1
和obj2
,因为它们的颜色值包括关键字“ red”和“ green”。
说我的查询是"blue, purple".
所得的集合应包括obj1
,obj2
和obj3
。
而且,查询的格式和Obj的属性将是用“,”分隔的值,因为属性和查询本身是由数组生成的。即,对象的属性和查询本身将始终采用以下格式:
"value1, value2, value3, value4"
永远不会是这样:
"value1 value2 value3 value4"
或任何其他可能的格式。
感谢所有帮助。
def search_function(search_string)
names_array = search_string.split(', ')
query = 'name LIKE ?'
number_of_ors = names_array.count
number_of_ors.times do
query += ' OR name LIKE ?'
end
Objects.where(query, *names_array)
end