此查询引发错误:
EncodingPreset.where('default = ?', false)
ActiveRecord::StatementInvalid: PG::Error: ERROR: syntax error at or near "default"
LINE 1: ...coding_presets".* FROM "encoding_presets" WHERE (default = ...
^
: SELECT "encoding_presets".* FROM "encoding_presets" WHERE (default = 'f')
但这有效:
EncodingPreset.where(:default => false)
为什么第一个查询不起作用?
版本:
ruby-1.9.3-p194
activerecord-3.2.11
答案 0 :(得分:7)
这是因为default是一个关键字,必须放在引号中才能在查询中使用。 这应该有效:
EncodingPreset.where('"default" = ?', false)
答案 1 :(得分:3)
默认是postgreSQL中的保留关键字,这就是它抛出错误的原因。 使用其他名称更改列名称,然后它可以正常工作