你如何引用Postgres中的字符串
在Rails中我使用MySQL并拥有
SnCl.all(:conditions => "col3=\"xx\"")
但它不适用于Heroku中的Postgres DB
正如评论中所提到的,大多数数据库对字符串文字使用单引号,对标识符使用双引号。 MySQL相当宽松,也会接受字符串文字的双引号,但PostgreSQL(谢天谢地)非常严格。 所以你想使用单引号:
SnCl.all(:conditions => "col3 = 'xx'")
或使用where
:
SnCl.where("col3 = 'xx'")
或合理使用数据库驱动程序的报价设施:
SnCl.where("col3 = #{SnCol.connection.quote('xx')}")
并且最后保存最好的,明智的人使用占位符或哈希参数来做到这一点:
SnCl.where('col3 = ?', 'xx') SnCl.where('col3 = :col3', :col3 => 'xx') SnCl.where(:col3 => 'xx')
最后一个对于Rails来说是最惯用的,上面的两个对于更复杂的条件是有用的,在这些条件中,链接太麻烦或不起作用(例如当你在WHERE子句中需要OR时)。
你最好where
适合自己病情的where
使用。 看一下
http://guides.rubyonrails.org/active_record_querying.html#conditions
- 你如何改变你的Rails应用程序数据?
- Rails 4.0.0 – “没有将nil隐式转换为String”
- ActiveRecord has_many:通过在批量分配上复制计数器缓存
- 如何查找记录,其has_many通过对象包括某些列表的所有对象?
- Rails:是否可以为has_and_belongs_to_many关联添加额外的属性?
- ActiveRecord :: Enum – PG :: InvalidTextRepresentation:ERROR:整数的输入语法无效:
- 使用rails中的复合键更新模型嵌套属性
- 使用Activerecord对多列进行求和
- Ruby on Rails使用filter值数组进行最佳搜索?