Mon point de départ est essentiellement RailsCast de Ryan Bate. J'ai modifié son code pour accommoder les clauses OR ainsi que ET.Passage ou itération à travers BigDecimal
Dans le modèle User, il existe deux attributs nommés hour_price_high et hour_price_low. Les utilisateurs fixeront leur taux horaire, par exemple 45,25 $/h à 55,50 $/h. Les visiteurs du site chercheront des utilisateurs enregistrés dans une fourchette de prix allant de 50,00 $/h à 60,00 $/h. Cette recherche devrait renvoyer tous les utilisateurs qui se chevauchent. Les entrées de migration respectives pour ces attributs sont les suivants:
# CreateUser migration
...
t.decimal "hour_price_high", :precision => 6, :scale => 2
t.decimal "hour_price_low", :precision => 6, :scale => 2
...
Ils sont de type BigDecimal et je dois augmenter par ces pour rechercher des utilisateurs:
# 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
Quand je lance ce code, je reçois cette erreur :
TypeError:
can't iterate from BigDecimal
Des idées sur la façon d'incrémenter à travers ceux-ci? Je n'ai besoin d'incrémenter que deux décimales. Merci d'avoir regardé!
Vous êtes génial. Votre recommandation> = et <= m'a conduit sur le bon chemin. J'avais besoin d'utiliser une combinaison de ce que vous avez dit et ENTRE. Je devais ajouter ceci aussi: ["users.hour_price_low <=? ET users.hour_price_high> =?", Price_low, price_high] à moins que price.blank? ... ["users.hour_price_low/high ENTRE? ET?", price_low, price_high] sauf si price.blank? Tous les tests passent! Merci encore! – mikeborgh