我有一个搜索框,用户可以输入“Param1”,我的控制器包含:
Model.where('column_name LIKE ?', "%#{search_field}%")
这将被转换为:
SELECT ... FROM table WHERE column_name LIKE '%Param1%'
如果用户输入"Param1",那么这个方法就很好用。但我想让它变成逗号分隔的搜索字段。
所以,如果用户输入"Param1,param2"或"Param1,Param2,Param3",WHERE LIKE子句应该能正常工作。我的想法是基于','拆分字符串,并且不知道如何在这里构建Model.where子句,因为它可以是1个参数或4个参数。
Model.where(column_name: array)
接受,并生成column_name IN (...)
查询。正如@arieljuod所指出的那样,这样的查询只搜索精确匹配。我添加了另一种解决方案(但仅在postgresql中进行了测试)。希望能有所帮助。 - user1201917