从ActiveRecord :: Relation获取SQL数组

时间:2015-05-13 19:13:48

标签: mysql sql ruby-on-rails activerecord

我正在建立这样的查询:

scope = User.select(:name).where("name = ?", 'test')

在我的代码的另一部分中,我尝试将scopeActiveRecord::Relation对象转换为["SELECT name FROM users WHERE name = ?", 'test']之类的SQL数组。有没有办法实现这个目标?提前谢谢。

1 个答案:

答案 0 :(得分:0)

似乎无法从ActiveRecord::Relation对象获取您想要的数组。

说我们只是使用where。当我们致电User.where("name = ?", "test")时,我们会在ActiveRecord::QueryMethods中输入where方法。这会调用调用where!的{​​{1}}。因为我们将查询作为字符串传递,所以我们最终在这里:

build_where

# ActiveRecord::QueryMethods#build_where when String, Array [@klass.send(:sanitize_sql, other.empty? ? opts : ([opts] + other))] 将SQL查询与值组合在一起,结果存储在sanitize_sql中:

where_values

> User.where("name = ?", "test").where_values => ["name = 'test'"] 仅保留此合并版本,而不是单独的查询和值。