这适用于我的开发环境,但是当我尝试使用Postgres通过Heroku运行时,我收到此错误。
2012-04-07T21:35:14+00:00 app[web.1]: ActiveRecord::StatementInvalid
(PG::Error: ERROR: operator does not exist: integer == integer
2012-04-07T21:35:14+00:00 app[web.1]: LINE 1: ...."value") AS avg_id FROM "datapoints"
WHERE (habit_id == 1)
2012-04-07T21:35:14+00:00 app[web.1]: HINT: No operator matches the given name and argument type(s).
You might need to add explicit type casts.
2012-04-07T21:35:14+00:00 app[web.1]: : SELECT AVG("datapoints"."value") AS avg_id FROM "datapoints
WHERE (habit_id == 1)):
以下是我的控制器的代码行:
Datapoint.average(:value, :conditions => ['habit_id == ?', self.habit_id])
我对rails非常陌生,所以这很容易就是一个非常简单的错误 - 对我在这里做错了什么的想法?
答案 0 :(得分:5)
只需使用一个等号。
Postgresql(和SQL标准)使用单个等号(=)进行比较:http://www.postgresql.org/docs/8.0/static/functions-comparison.html
与编程语言不同,SQL不需要支持将其用于赋值,除非在update子句中。因此,它不需要使用双等于运算符(==)来进行大多数编程语言所需的比较。