1

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

4

1 に答える 1

0

代わりにinput:input_string[0..1]を使用してみてください

于 2012-08-16T08:25:51.527 に答える