我在我的Rails项目中使用Postgres和hstore。我将地址信息(街道,城市,邮编,国家,......)存储在名为"地址"的hstore列中。我可以在数据库中查询这样的城市:
Company.where("address -> 'country' = 'Finland'")
完美无缺。
我想要做的是查询数据库中的一系列国家:
Company.where("address -> 'country' IN my_array_of_many_countries")
当然它没有那样工作。有谁知道如何从my_array_of_many_countries数组中存储的国家/地区获取所有公司?
非常感谢任何帮助。
答案 0 :(得分:4)
ActiveRecord知道如何处理Ruby数组,所以让它完成它的工作:
Company.where("address -> 'country' IN (?)", my_array_of_many_countries)
请不要使用字符串插值来构建SQL,除非你确实需要这样做,并且对于正确转义和引用所有内容你一丝不苟。
答案 1 :(得分:-1)
最简单的解决方案是将数组转换为字符串:
my_array_of_many_countries = ['France', 'Germany']
my_array_of_many_countries_string = "'#{my_array_of_many_countries.join("','")}'"
Company.where("address -> 'country' IN (#{my_array_of_many_countries_string})")
这仅在您的数组只包含字符串时才有效。 顺便说一句,还没有测试过。