Трябва да използвате заместител за да получите правилния формат и да се уверите, че е правилно цитиран:
t = Time.new
events = Event.where("datetime < :t", :t => t)
Не можете да сравнявате timestamp
колона с цяло число в PostgreSQL, но можете в SQLite. Трябва да сравните своя timestamp
с друго timestamp
(или date
) или низ, който може да бъде анализиран като timestamp
. Този SQL няма да работи:
SELECT "events".* FROM "events" WHERE (datetime < 132462148)
но те ще:
SELECT "events".* FROM "events" WHERE (datetime < '2011-12-23 06:52:25.096869')
SELECT "events".* FROM "events" WHERE (datetime < '2011-12-23')
Тук има няколко урока:
- Трябва също така да започнете да разработвате върху PostgreSQL, ако възнамерявате да внедрявате в Heroku, ActiveRecord няма да ви изолира от всички разлики между различните бази данни.
- Трябва да оставите ActiveRecord да се тревожи за проблемите с преобразуването на типове, доколкото е възможно, ако сравнявате с дата или час, използвайте контейнер и предайте на AR някакъв обект за време и оставете AR да се тревожи за това.
- Използвайте контейнери вместо интерполация на низове, когато е възможно.