使用此gem:http://filterrific.clearcove.ca/我已在我的应用上成功设置搜索。这是使用的范围。
scope :search_by_name, ->(name){ where(name: name) }
让我们说有一个名字叫Jonathon'并且你搜索' jon'我希望它能带来这个结果。此外,如果您正在搜索“jonathon' (将J改为j)它没有显示结果。你必须完全按照条目。
答案 0 :(得分:0)
要在数据库之间保持可移植性,请考虑将范围更改为命名方法并使用AREL匹配。
def search_by_name(name)
where(arel_table[:name].matches(name))
end
虽然范围可能有效:
scope :search_by_name, ->(name){ where(arel_table[:name].matches(name)) }
由于命名范围与方法相同,特别是当你传递一个lambda变量时,没有缺点它是一个方法而不是一个范围。
您可能需要在名称参数前面添加或附加%
(或两者)以查找包含参数的任何内容(而不仅仅是对不区分大小写的匹配。所以也许......
def search_by_name(name)
where(arel_table[:name].matches('%' + name + '%'))
end