2017-09-13 65 views
0

如何讓sql只有條件?Rails的activerecord在哪裏sql

Lead.where(status: 1).to_sql

SELECT `leads`.* FROM `leads` WHERE `leads`.`status` = 1

我只需要條件的SQL。即, leads.`status` = 1

此外我有默認範圍。從我只需要該範圍爲sql

+2

我覺得有一些資料,這個問題缺少。你想通過這個實現什麼?如果你只需要SQL片段,你可以很容易地把它寫成一個字符串。如果你想執行SQL,那麼你根本不需要to_sql。 – AJFaraday

+0

只是'leads.status = 1'沒有意義。你將如何解釋加入和別名表的信息? – kiddorails

+0

@AJFaraday它只是一個例子。我必須執行復雜的SQL。但取決於用戶角色,範圍將發生變化。所以我需要將該範圍轉換爲SQL。然後,只有我可以將該範圍sql添加到我的原始sql。 –

回答

1

您可以使用Arel::SelectManager#where_sql

>> Lead.where(status: 1).arel.where_sql 
=> "WHERE \"leads\".\"status\" = $1" 
+0

是否有任何選項來獲得唯一的條件字符串,不** ** WHERE –

+0

您可以編寫自定義訪問者來執行此操作:https://gist.github.com/tcopeland/9715f83c7cb516209491996bf2442476 –