我有一个输入字符串,例如香蕉,并试图在数据库中找到相应的对象。该对象具有仅包含第一个字母的下限属性和上限属性。它们的长度没有定义。所以下限可以是“a”或“ananas”,上限可以是“b”或“ban”。如果给定的输入字符串以介于范围之间的字母开头,则以下查询有效:
scope :by_name, lambda {|input_string| where('lower_limit <= :input AND upper_limit >= :input', input: input_string) }
但如果上限由搜索字符串的第一个字母组成,则比较失败,因为 'banana' > 'ban'。
如何更改查询以使其起作用?
我正在使用 Ruby 1.9.3、Rails 3.2.3 和 ActiveRecord 3.2.3。