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
ここで、「since」は時間(「1時間」、「1日」、「3日」)などを表す文字列です。助言がありますか?
Chronicを使用して、日付文字列を実際の日時オブジェクトに解析してみてください。
私はこれをActiveSupportgemと一緒にハッキングしました:
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))]