1

在我的 rails 应用程序中,我试图根据某些条件搜索用户模型。

特别是,我有一个位置字段,它是一个字符串,我想根据它是否包含搜索字符串来搜索这个字段。例如,如果我搜索位置为“牛津”的用户,我希望它也返回具有该变体的用户,例如“牛津,英格兰”。

在网上搜索了这个问题的答案后,我似乎应该在 activerecord 搜索中使用 LIKE 关键字,但对我来说这只是返回完全匹配。

这是我的搜索方法中的代码片段

conditions_array = []
conditions_array << [ 'lower(location) LIKE ?', options[:location].downcase ] if !options[:location].empty?
conditions = build_search_conditions(conditions_array)
results = User.where(conditions)

难道我做错了什么?还是使用 LIKE 不是实现目标的正确方法?

4

1 回答 1

2

你需要做like '%oxford%'

%匹配任意数量的字符,甚至是零个字符

conditions_array << [ 'lower(location) LIKE ?', "%#{options[:location].downcase}%" ] if !options[:location].empty?
于 2013-03-13T12:13:29.107 回答