2011-07-15 36 views
0

請我有下面的代碼在我的模型有一個問題,我的模型查詢

Letter.count(:id, :conditions => ["language_id = #{lang} AND :created_at => '#{start_date.to_date.strftime('%Y-%m-%d')}'..'#{end_date.to_date.strftime('%Y-%m-%d')}' " ]) 

我想獲得給定日期之間的不同字母的letters.id的計數。 這是錯誤的...有

請那些人知道我做錯了...謝謝

SQLite3::SQLException: near ">": syntax error: SELECT COUNT("letters"."id") FROM "letters" WHERE ("letters".language_id = 1) AND (language_id = 1 AND :created_at => '2011-05-01'..'2011-05-08 
+0

看不到任何東西相對於Highcharts,所以刪除了此標籤 –

回答

1

這可以大大簡化。有幾點:

  1. 你不串
  2. 您需要使用between ? and ?的日期內使用:created_at => ...格式。
  3. 你不需要手動strftime你的日期,Rails會自動處理這個。
  4. 在Rails 3中,首選方法是使用where(...)而不是:conditions Hash代表您的count(...)
  5. 你應該使用Rails的安全插值爲您language_id場太

Letter.where("language_id = ? AND created_at between ? and ?", lang, start_date.to_date, end_date.to_date).count