重复引用方法散列连接

时间:2013-08-14 15:06:04

标签: ruby hash escaping quotes

我有这些元素的哈希

@ratings = {"PG"=>"1", "PG-13"=>"1"}

我只选择了密钥并将其与,

分开
keys = @ratings.keys.join("','")

我想在select in query中使用它们:

Movies.where(:rating => [keys])

但它只适用于一个简单的值,因为当有更多值时,引号会重复:

SELECT "movies".* FROM "movies" WHERE "movies"."rating" IN ('PG'',''PG-13')

为什么要复制报价?

1 个答案:

答案 0 :(得分:1)

使用join将字符串传递给where子句,生成SQL字符串的图层正在清理输入。我假设您使用ActiveRecord?如果是这样,那么只需直接传递数组。

Movies.where(:rating => @ratings.keys)