0
我已經看到下面的示例,但query: "%#{query}%"
是什麼意思?如何將搜索字符串傳遞到導軌範圍
scope :by_query, ->(query, ...){
joins(...).
where(... OR
... ,
query: "%#{query}%"
)
}
我已經看到下面的示例,但query: "%#{query}%"
是什麼意思?如何將搜索字符串傳遞到導軌範圍
scope :by_query, ->(query, ...){
joins(...).
where(... OR
... ,
query: "%#{query}%"
)
}
很可能應該是做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%')
這就像運算符的SQL。參見[參考](https://www.w3schools.com/sql/sql_like.asp)和[示例](https://stackoverflow.com/questions/19105706/rails-4-like-query-activerecord-adds-引號) –