Фильтрация по подстрокам даты в Rails - PullRequest
0 голосов
/ 19 июня 2009

У нас есть элемент управления сеткой, который позволяет пользователю фильтровать текст в разных полях. Некоторые из этих полей могут быть временными метками, такими как create_at и updated_at.

Теперь пользователь может выполнять множество различных типов фильтров, включая>, <,> =, <= и т. Д. Итак, запрос, который попадает из элемента управления, может выглядеть следующим образом: </p>

"созданный_ат> 2009» или «созданный_ат> = 2006 и созданный_ат <= 2010». </p>

База данных не распознает годы как действительные метки времени, и рельсы не конвертируют их как таковые. Существуют ли какие-либо плагины или идиоматические способы, позволяющие выполнить год или, что еще лучше, часть метки времени, сделать правильное предположение о значении и преобразовать ее в пригодную для использования базу данных?

Ответы [ 3 ]

3 голосов
/ 19 июня 2009

Посмотрите на следующие проекты

Например, searchlogic поддерживает такие условия, как следующие.

Post.all(:conditions => { :hour_of_created_at => 9 })
2 голосов
/ 19 июня 2009

create_at> 2009

Post.all(:conditions => ["created_at > ?", Date.new(y = 2010, m = 1, d = 1).to_s])

create_at> = 2006

Post.all(:conditions => ["created_at >= ?", Date.new(y = 2006, m = 1, d = 1).to_s])

create_at <= 2010 </strong>

Post.all(:conditions => ["created_at <= ?", Date.new(y = 2010, m = 12, d = 31).to_s])

Нечто подобное возможно?

1 голос
/ 19 июня 2009

вы можете использовать класс времени ruby ​​

Time.local(2010) # => Fri Jan 01 -0600 2010

или

Time.gm(2010) # => Fri Jan 01 00:00:00 UTC 2010 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...