1
一個ActiveRelation
實例有where_values
。在Rails 4.2.2及更早版本下面的代碼使用Rails 4.2.3改變where_values的行爲,如何獲得where_values的有效SQL?
class Post < ActiveRecord::Base
scope :staff_picks, -> { where(staff_pick: true) }
end
puts Post.staff_picks.where_values[0].to_sql
PostgreSQL的返回
"posts"."staff_pick" = 't'
那是正確的。
的Rails 4.2.3打破了這種行爲,同樣的代碼返回
"posts"."staff_pick" = $1
我如何用Rails 4.2.3和4.2.4一樣有效的SQL?
爲什麼你需要將部分查詢作爲SQL字符串?你想達到什麼目的? – spickermann
我需要將該SQL用於更復雜的查詢。 – joeri
也許有一種比挖掘Arel interals更簡單的方法。您是否考慮過使用['merge'](http://apidock.com/rails/ActiveRecord/SpawnMethods/merge)?你能否提供一個你真正需要做什麼的簡單例子? – spickermann