我的出發點基本上是Ryan Bate的RailsCast。我修改了他的代碼以適應OR子句以及AND。步進或迭代通過BigDecimal
在用戶模型中,有幾個屬性名爲hour_price_high和hour_price_low。用戶將他們的小時費率範圍設置爲45.25美元/小時至55.50美元/小時。網站訪問者將以50.00美元/小時到60.00美元/小時的價格範圍搜索註冊用戶。此搜索應返回所有重疊的用戶。這些屬性的相應遷移的項目有:
# 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
有關如何通過這些增加任何想法?我只需要增加兩位小數。感謝您的期待!
你真棒。您的> =和<=推薦使我走上了正確的道路。我需要結合你所說的和BETWEEN。我還需要添加:[「users.hour_price_low <=?AND users.hour_price_high> =?,price_low,price_high]除非price.blank? ... [「users.hour_price_low/high BETWEEN?AND?」,price_low,price_high]除非price.blank?所有的測試都通過了!再次感謝! – mikeborgh