[英]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.