Сравнение созданных полей с PGSQL на Rails - PullRequest
0 голосов
/ 07 декабря 2011

Мой вопрос похож на тот, который был найден здесь:

Как сравнить значения TIMESTAMP sqlite

За исключением того, что ответ не работает для PostgreSQL. Есть ли способ сравнить два значения созданного Rails с помощью функции PG_?

Вот что я хочу сделать (я знаю, что это не работает, DATETIME не работает для PG):

EventDish.find_by_sql(["select * from ............. and DATETIME(events.created_at) < ?", other_event.created_at])

С добавлением эллипсов, чтобы выделить важную часть. Другими словами, я хочу сравнить два поля Rails create_at (в них используется значение по умолчанию), но я хочу сравнить их с PG. Какие-либо предложения? (Я не слишком знаком с SQL в целом, поэтому любые решения на чистом Rails также приветствуются)

Заранее спасибо

Ответы [ 2 ]

1 голос
/ 07 декабря 2011

Вы должны просто сделать:

EventDish.where('created_at < ?', other_event.created_at)

Это означает:

"SELECT \"event_dishes\".* FROM \"event_dishes\" WHERE (created_at < '2011-06-10 16:39:19.557436')"

Лично я бы не стал использовать find_by_sql, если только вам действительно не нужно выполнять сложные запросы. Если можете, сделайте это просто, и пусть ActiveRecord сделает всю работу за вас.

Если вы не можете избежать использования find_by_sql, просто обновите свой текущий запрос так:

EventDish.find_by_sql(["select * from ............. WHERE (created_at < '#{other_event.created_at}')")
0 голосов
/ 07 декабря 2011

Просто пропустите функцию DATETIME ():

EventDish.find_by_sql(['select * from event_dish where created_at > ?', other_event.created_at])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...