请在我的模型中使用以下代码
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 :(得分:1)
这可以大大简化。几点:
:created_at => ...
格式
between ? and ?
作为日期。strftime
日期,Rails会自动处理此问题。where(...)
使用:conditions
而不是count(...)
哈希。language_id
字段使用Rails的安全插值 Letter.where("language_id = ? AND created_at between ? and ?", lang, start_date.to_date, end_date.to_date).count