私の出発点は、基本的にはRyan BateのRailsCastです。 ORと同様にOR節に対応するようにコードを修正しました。BigDecimalによるステッピングまたは繰り返し
ユーザーモデルには、hour_price_highとhour_price_lowという2つの属性があります。ユーザーは$ 45.25/h〜$ 55.50/hのような毎時のレート範囲を設定します。サイト訪問者は$ 50.00/h〜$ 60.00/hなどの価格帯で登録ユーザーを検索します。この検索では、重複するすべてのユーザーが返されます。これらの属性のそれぞれの移行エントリは次のとおりです。
# CreateUser migration
...
t.decimal "hour_price_high", :precision => 6, :scale => 2
t.decimal "hour_price_low", :precision => 6, :scale => 2
...
彼らはBigDecimal型のものであり、私は、ユーザーを検索するには、これらを通じてインクリメントする必要があります。
# Search.rb
def low_price_or_conditions
["users.hour_price_low IN (?)", price_low..price_high] unless price.blank?
end
def high_price_or_conditions
["users.hour_price_high IN (?)", price_low..price_high] unless price.blank?
end
私はこのコードを実行すると、私はこのエラーを取得します:
TypeError:
can't iterate from BigDecimal
これをどのように増やすかについてのアイデアはありますか?私は小数点以下2桁まで増分するだけです。見てくれてありがとう!
あなたは素晴らしいです。あなたの> =と<=推奨は正しい道を私に導きました。私は、あなたが言ったことと自分のものの組み合わせを使う必要があった。 price.blankを除いて、これを追加する必要がありました:["users.hour_price_low <=?AND users.hour_price_high> =?"、price_low、price_high? ... ["users.hour_price_low/high BETWEEN?AND?"、price_low、price_high] price.blankを除く?すべてのテストは合格です!再度、感謝します! – mikeborgh