2009-06-19 15 views
0

Wir haben einen Grid-Control, die ein Benutzer Text in verschiedenen Feldern filtern können. Einige dieser Felder können Zeitstempel sein, wie created_at und updated_at.Filterung nach Datum Teil in Rails

Jetzt kann ein Benutzer viele verschiedene Arten von Filtern tun, einschließlich>, <,> =, < = usw. Also, eine Abfrage, die gegenüber der Kontrolle kommt aussehen könnte:

„created_at> 2009 "oder" created_at> = 2006 und created_at < = 2010 ".

Die Datenbank erkennt Jahre als gültigen Zeitstempel, noch Schienen automatisch, sich als solche konvertieren. Gibt es irgendwelche Plugins oder idiomatische Möglichkeiten, um ein Jahr oder besser noch einen Teil eines Zeitstempels zu machen, die Bedeutung zu schätzen und sie in einen brauchbaren Zeitstempel umzuwandeln?

Antwort

3

einen Blick auf die folgenden Projekte haben

Zum Beispiel unterstützt searchlogic Bedingungen wie die folgende.

Post.all(:conditions => { :hour_of_created_at => 9 }) 
+0

searchlogic sieht mintox verwenden - ich denke, es wird tun, was hier gebraucht wird, obwohl ich es nicht umgesetzt haben, noch mich. – mlambie

2

created_at> 2009

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

created_at> = 2006

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

created_at < = 2010

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

So etwas wie vielleicht das?

1

können Sie Rubys Klasse Time

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

oder

Time.gm(2010) # => Fri Jan 01 00:00:00 UTC 2010