我的模型查询有问题

时间:2011-07-15 12:44:17

标签: ruby-on-rails-3

请在我的模型中使用以下代码

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

1 个答案:

答案 0 :(得分:1)

这可以大大简化。几点:

  1. 您不在字符串
  2. 中使用:created_at => ...格式
  3. 您需要使用between ? and ?作为日期。
  4. 您无需手动strftime日期,Rails会自动处理此问题。
  5. 在Rails 3中,首选方法是为where(...)使用:conditions而不是count(...)哈希。
  6. 你应该对你的language_id字段使用Rails的安全插值
  7. Letter.where("language_id = ? AND created_at between ? and ?", lang, start_date.to_date, end_date.to_date).count