簡體   English   中英

在Rails的where子句中始終傳遞一個字符串

[英]Passing a string in where clause in Rails is always quoted

我正在嘗試以編程方式編寫.where()子句。

看起來像

Post.where("description ?", @composite)

其中@composite是之前構造的字符串。 可能是= 'ABCD'或類似IS LIKE 'ABCD'等。

問題在於生成的SQL總是單引號。 例如:

Post Load (0.2ms)  SELECT `posts`.* FROM `posts` WHERE (description 'IS LIKE "ABCD"')

有什么辦法可以“取消報價”嗎?

=IS LIKE不應成為您傳入的字符串的一部分。

它被單引號是因為這正是? 可以:SQL安全引用。

如果您想自己完全構建SQL,請這樣做,例如,

Post.where("description #{@composite}")

您需要自己清理字符串,這很容易,因為大概是在使用輸入來構造=IS LIKE部分。

用這個:

Post.where("description #{@composite}")

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM