简体   繁体   English

活动记录查询错误

[英]Active Record query error

This query throws an error: 该查询引发错误:

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')

but this works: 但这有效:

EncodingPreset.where(:default => false)

Why is the first query not working? 为什么第一个查询不起作用?

Versions: 版本:

ruby-1.9.3-p194
activerecord-3.2.11

That's because default is a keyword and has to be put in quotes for use in a query. 这是因为default是关键字,必须将其放在引号中才能在查询中使用。 This should work: 这应该工作:

EncodingPreset.where('"default" = ?', false)

default is reserved keyword in postgreSQL that's why it throws error. 默认是postgreSQL中的reserved关键字,这就是它引发错误的原因。 Change the column name with some other name, then it works 用其他名称更改列名称,然后它可以工作

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM