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-引号) –