繁体   English   中英

从ActiveRecord :: Relation获取SQL数组

[英]Get SQL array from ActiveRecord::Relation

我正在建立这样的查询:

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

在我的代码的另一部分中,我试图将scope ,它是一个ActiveRecord::Relation对象转换为SQL数组,例如["SELECT name FROM users WHERE name = ?", 'test'] 有什么办法可以做到这一点? 提前致谢。

似乎不可能从ActiveRecord::Relation对象中获取想要的数组。

假设我们只是在使用where 当我们调用User.where("name = ?", "test")我们在ActiveRecord :: QueryMethods中输入where方法。 这叫where! 调用build_where 由于我们以字符串形式传入查询,因此我们在这里结束:

# ActiveRecord::QueryMethods#build_where
when String, Array
  [@klass.send(:sanitize_sql, other.empty? ? opts : ([opts] + other))]

sanitize_sql将SQL查询与值结合在一起,结果存储在where_values

> User.where("name = ?", "test").where_values
=> ["name = 'test'"]

ActiveRecord::Relation仅保留此组合版本,而不单独保留查询和值。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM