バナナなどの入力文字列があり、データベースで対応するオブジェクトを見つけようとしています。そのオブジェクトには、最初の文字のみを含む下限属性と上限属性があります。それらの長さは定義されていません。したがって、下限は「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、ActiveRecord3.2.3を使用しています。