2010-02-10 2 views
1

Я использую следующие в рамках ActiveRecord найти метод:Абстрагируясь дату вычитания SQL запрос с Rails

:conditions => "created_at > date_sub(now(), INTERVAL 7 DAY)" 

Это работает должным образом на моем сервере разработки, где я использую MySQL, но я развертывание в postgreSQL, у которого нет функции date_sub. Игнорируя тот факт, что я использую две разные базы данных, имеет ли Rails что-либо встроенное для абстрактной операции вычитания даты?

Если нет, существует ли рекомендуемая конструкция в Rails для указания двух разных SQL-запросов, которые должны выполняться в случае обнаружения разных БД?

ответ

1

Вы могли бы сделать

Object.find(:all, :conditions => ["created_at > ?", 7.days.ago]) 
#=> SELECT * FROM "objects" WHERE (created_at > '2010-02-03 12:06:19.352398') 

должны работать на разных д.б.н.

+0

думает о делать это, но я надеялся, чтобы иметь возможность использовать время базы данных, а не времени веб-сервера. – Alex

+0

Я не думаю, что это важно, если вы уже используете ActiveRecord :) Кроме того, это будет работать через dbs – nas

+0

Я полагаю, это зависит от настройки. Полагаю, что дата_таблица created_at была предоставлена ​​из базы данных, а не из веб-сервера. Это не так с ActiveRecord? – Alex

Смежные вопросы