Come menzionato nei commenti, la maggior parte dei database utilizza virgolette singole per letterali stringa e virgolette doppie per identificatori. MySQL è piuttosto rilassato e accetterà anche virgolette doppie per stringhe letterali, ma PostgreSQL è (per fortuna) piuttosto severo. Quindi vuoi usare virgolette singole:
SnCl.all(:conditions => "col3 = 'xx'")
o usando where
:
SnCl.where("col3 = 'xx'")
o con un uso ragionevole delle funzionalità di quotazione del driver del database:
SnCl.where("col3 = #{SnCol.connection.quote('xx')}")
E salvando il meglio per ultimo, nel modo in cui lo fanno le persone ragionevoli usando un segnaposto o argomenti hash per where
:
SnCl.where('col3 = ?', 'xx')
SnCl.where('col3 = :col3', :col3 => 'xx')
SnCl.where(:col3 => 'xx')
L'ultimo sarebbe il più idiomatico per Rails e i due precedenti sarebbero utili per condizioni più complesse in cui il concatenamento è troppo ingombrante o non funziona (come quando è necessario un OR nella clausola WHERE).