在Rails中我使用MySQL并拥有
SnCl.all(:conditions => "col3=\"xx\"")
但它不适用于Heroku中的Postgres DB
答案 0 :(得分:1)
如评论中所述,大多数数据库对字符串文字使用单引号,对标识符使用双引号。 MySQL相当宽松,并且也会接受字符串文字的双引号,但PostgreSQL(谢天谢地)非常严格。所以你想使用单引号:
SnCl.all(:conditions => "col3 = 'xx'")
或使用where
:
SnCl.where("col3 = 'xx'")
或合理使用数据库驱动程序的引用工具:
SnCl.where("col3 = #{SnCol.connection.quote('xx')}")
使用占位符或Hash参数where
以明智的方式保存最佳效果:
SnCl.where('col3 = ?', 'xx')
SnCl.where('col3 = :col3', :col3 => 'xx')
SnCl.where(:col3 => 'xx')
最后一个对于Rails来说是最惯用的,上面的两个对于更复杂的条件非常有用,在这些条件中,链接太麻烦或不起作用(例如在WHERE子句中需要OR时)。
答案 1 :(得分:0)
你最好使用where
来治疗你的病情。看看
http://guides.rubyonrails.org/active_record_querying.html#conditions