2009-06-19 9 views
0

ユーザは、異なるフィールドのテキストをフィルタリングできるグリッドコントロールがあります。これらのフィールドの多くは、created_atやupdated_atのようなタイムスタンプです。Railsの部分文字列によるフィルタリング

など

今、ユーザーは、<>を含むフィルタの多くの異なる種類を行うことができ、> =、< =、だから、コントロールの向かいに来てクエリは次のようになります。「

のcreated_at> 2009 "、または" created_at> = 2006 and created_at < = 2010 "となります。

データベースでは年が有効なタイムスタンプとして認識されず、レールによって自動的に変換されません。 1年かそれ以上はタイムスタンプの部分をとり、その意味を推測し、それを使用可能なデータベースのタイムスタンプに変換するプラグインや慣用方法はありますか?

答えて

3

は、例えば

次のプロジェクトを見てください、searchlogicは、以下のような条件をサポートしています。

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

searchlogicはmintoxに見える - 私はそれが私はまだ自分自身をそれを実装していないものの、ここで必要とされているものを行うと思います。 – 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]) 

これはおそらく何か?

1

あなたはルビーの時のクラスを使用することができます

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

または

Time.gm(2010) # => Fri Jan 01 00:00:00 UTC 2010 
関連する問題