Conforme mencionado nos comentários, a maioria dos bancos de dados usa aspas simples para literais de string e aspas duplas para identificadores. O MySQL é bastante negligente e também aceita aspas duplas para literais de string, mas o PostgreSQL é (felizmente) bastante rigoroso. Então você quer usar aspas simples:
SnCl.all(:conditions => "col3 = 'xx'")
ou usando
where
:SnCl.where("col3 = 'xx'")
ou com o uso sensato dos recursos de cotação do driver de banco de dados:
SnCl.where("col3 = #{SnCol.connection.quote('xx')}")
E deixando o melhor para o final, da forma como as pessoas sensatas fazem isso usando um espaço reservado ou argumentos de hash para
where
:SnCl.where('col3 = ?', 'xx')
SnCl.where('col3 = :col3', :col3 => 'xx')
SnCl.where(:col3 => 'xx')
A última seria a mais idiomática para Rails e as duas acima seriam úteis para condições mais complexas onde o encadeamento é muito complicado ou não funciona (como quando você precisa de um OR em sua cláusula WHERE).