2017-09-01 55 views
0

我已經看到下面的示例,但query: "%#{query}%"是什麼意思?如何將搜索字符串傳遞到導軌範圍

scope :by_query, ->(query, ...){ 
    joins(...). 
    where(... OR 
      ... , 
     query: "%#{query}%" 
    ) 
    } 
+1

這就像運算符的SQL。參見[參考](https://www.w3schools.com/sql/sql_like.asp)和[示例](https://stackoverflow.com/questions/19105706/rails-4-like-query-activerecord-adds-引號) –

回答

1

很可能應該是做SQL LIKE運營商,但是,它不是:

query = 'something' 
User.where(query: "%#{query}%").to_sql 
# => SELECT "users".* FROM "users" 
# WHERE "users"."query" = '%something%' 

它只是使用Active Record的查詢接口的hash conditions功能來尋找那些相等的值精確到數值%#{query}%。如果它應該做一個LIKE查詢,您將需要做這樣的事情:

User.where("query LIKE ?", "%#{query}%").to_sql 
# SELECT "users".* FROM "users" 
# WHERE (query LIKE '%something%')