如何讓sql只有條件?Rails的activerecord在哪裏sql
Lead.where(status: 1).to_sql
SELECT `leads`.* FROM `leads` WHERE `leads`.`status` = 1
我只需要條件的SQL。即, leads.`status` = 1
此外我有默認範圍。從我只需要該範圍爲sql
如何讓sql只有條件?Rails的activerecord在哪裏sql
Lead.where(status: 1).to_sql
SELECT `leads`.* FROM `leads` WHERE `leads`.`status` = 1
我只需要條件的SQL。即, leads.`status` = 1
此外我有默認範圍。從我只需要該範圍爲sql
您可以使用Arel::SelectManager#where_sql
:
>> Lead.where(status: 1).arel.where_sql
=> "WHERE \"leads\".\"status\" = $1"
是否有任何選項來獲得唯一的條件字符串,不** ** WHERE –
您可以編寫自定義訪問者來執行此操作:https://gist.github.com/tcopeland/9715f83c7cb516209491996bf2442476 –
我覺得有一些資料,這個問題缺少。你想通過這個實現什麼?如果你只需要SQL片段,你可以很容易地把它寫成一個字符串。如果你想執行SQL,那麼你根本不需要to_sql。 – AJFaraday
只是'leads.status = 1'沒有意義。你將如何解釋加入和別名表的信息? – kiddorails
@AJFaraday它只是一個例子。我必須執行復雜的SQL。但取決於用戶角色,範圍將發生變化。所以我需要將該範圍轉換爲SQL。然後,只有我可以將該範圍sql添加到我的原始sql。 –