[英]Rails: safe query against stored array
我在对Postgres数据库中的数组字段执行where查询时遇到问题。
在我的rails应用程序中,我有一个名为People
的表。 其中的一列称为pets
。 现在,此列包含数组值,即:
["dog", "cat", "fish"]
我想执行一个查询,例如返回所有拥有宠物狗的人。
到目前为止,我一直使用的解决方案
People.where("\"pets\" @> '{\"" + checkedPet + "\"}'")
其中checkedPet
是变量,可以是“狗”或任何其他动物。
这可行,但我感觉很容易受到SQL注入问题的影响?
是这样吗 如果是这样,那么有什么更好,更安全的方法来避免这种情况?
根据ActiveRecord和PostgreSQL指南,您可以执行以下操作:
People.where('? = any("pets")', checkedPet)
要么
People.where('"pets" @> ?', "{#{checkedPet}}")
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.