コメントで述べたように、ほとんどのデータベースは文字列リテラルに一重引用符を使用し、識別子に二重引用符を使用します。 MySQLはかなり緩く、文字列リテラルの二重引用符も受け入れますが、PostgreSQLは(ありがたいことに)非常に厳密です。したがって、一重引用符を使用する必要があります:
SnCl.all(:conditions => "col3 = 'xx'")
またはwhere
を使用する :
SnCl.where("col3 = 'xx'")
または、データベースドライバの見積もり機能を適切に使用する場合:
SnCl.where("col3 = #{SnCol.connection.quote('xx')}")
そして最後に最善を尽くして、賢明な人々がwhere
へのプレースホルダーまたはハッシュ引数を使用してそれを行う方法 :
SnCl.where('col3 = ?', 'xx')
SnCl.where('col3 = :col3', :col3 => 'xx')
SnCl.where(:col3 => 'xx')
最後の1つは、Railsにとって最も慣用的なものであり、上記の2つは、チェーンが煩雑すぎるか機能しない(WHERE句にORが必要な場合など)、より複雑な条件で役立ちます。
>