2008-09-02 7 views
0

Rubyでは、次のことを試みています。ように時間の量を表す文字列(「1時間」、「1日」、「3日」)であり、「ので」Rubyの文字列を使った日時演算

def self.stats(since) 
    return Events.find(:all, :select => 'count(*) as this_count', :conditions => ['Date(event_date) >= ?', (Time.now - since)]).first.this_count 
end 

。助言がありますか?

答えて

2

私はactivesupportの宝石と一緒にこれをハッキング:

require 'active_support' 

def string_to_date(date_string) 
    parts = date_string.split 
    return parts[0].to_i.send(parts[1]) 
end 
sinces = ['1 hour', '1 day', '3 days'] 

sinces.each do |since| 
    puts "#{since} ago: #{string_to_date(since).ago(Time.now)}" 
end 

あなたの質問に答えるために、[編集]、あなたはそのようにそれを試してみてください:

:conditions => ['Date)event_date) >= ?', (string_to_date(since).ago(Time.now))] 
2

Chronicを使用して、日付文字列を実際のdatetimeオブジェクトに解析してみてください。

0

私はJohn Millikinに同意します。 Chronic、またはあなた自身のヘルパーさえも、あなたがRailsにまだ閉じ込められていないと仮定して、ActiveSupport全体よりもずっと軽くて効果的な依存関係になります。

関連する問題