Som nämnts i kommentarerna använder de flesta databaser enkla citattecken för bokstavssträngar och dubbla citattecken för identifierare. MySQL är ganska slappt och accepterar även dubbla citattecken för strängliteraler men PostgreSQL är (tack och lov) ganska strikt. Så du vill använda enstaka citattecken:
SnCl.all(:conditions => "col3 = 'xx'")
eller med where
:
SnCl.where("col3 = 'xx'")
eller med förnuftig användning av databasdrivrutinens offertmöjligheter:
SnCl.where("col3 = #{SnCol.connection.quote('xx')}")
Och spara det bästa till sist, så som förnuftiga människor gör det med hjälp av en platshållare eller Hash-argument till where
:
SnCl.where('col3 = ?', 'xx')
SnCl.where('col3 = :col3', :col3 => 'xx')
SnCl.where(:col3 => 'xx')
Den sista skulle vara den mest idiomatiska för Rails och de två ovan skulle vara användbar för mer komplexa förhållanden där kedjan antingen är för besvärlig eller inte fungerar (som när du behöver en OR i din WHERE-klausul).