Comment dois-je faire? De modèle.où(“created_at >= #{Temps.maintenant - 5.jours}”)

Ce qui a été m'énerve un peu...

Comment puis-je chaîne d'interpoler un datetime dans les Rails ActiveRecord requêtes?

# Works, but supeh ugleh:
Model.where("created_at >= ?", Time.now - 5.days)

# How do I do this?
Model.where("created_at >= #{Time.now - 5.days}")
# As is, it produces the following error message:
# ActiveRecord::StatementInvalid: PG::Error: ERROR:  syntax error at or near ...

La raison pour laquelle je prends soin de la lisibilité du code:

# I like this better:
Model.where("created_at >= #{Time.now - 5.days} OR" + \
            "updated_at >= #{Time.now - 3.days}")

# than this:
Model.where("created_at >= ? OR updated_at >= ?", Time.now - 5.days, Time.now - 3.days)

OriginalL'auteur thewillcole | 2012-03-17