Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails rails:使用regualr表达式进行查询_Ruby On Rails_Regex - Fatal编程技术网

Ruby on rails rails:使用regualr表达式进行查询

Ruby on rails rails:使用regualr表达式进行查询,ruby-on-rails,regex,Ruby On Rails,Regex,我正在尝试在android中实现一个过滤下拉搜索字段。我正在为我的数据库使用RESTful模板和rails api。我有一个叫skill的模型。我希望能够通过GET请求传递一个字符串,并查询用户的技能,只返回名称中包含该字符串的技能 我可以想象它看起来像: def index search_string = params[:myString] @skills= curr_user.skills.where(skill_name: contains search_string)

我正在尝试在android中实现一个过滤下拉搜索字段。我正在为我的数据库使用RESTful模板和rails api。我有一个叫skill的模型。我希望能够通过GET请求传递一个字符串,并查询用户的技能,只返回名称中包含该字符串的技能

我可以想象它看起来像:

 def index
    search_string = params[:myString]
    @skills= curr_user.skills.where(skill_name: contains search_string)
    render json: @skills

  end
有什么想法吗

谢谢

您可以随时随地使用Rails


这将是非常不愉快的。您可以做的最接近的事情是在SQL中使用%通配符,但SQL本身对搜索并不友好。即使是类似的通配符也应该避免,除非您正在搜索字符串的开头。否则,即使有索引,在大型数据集上也会非常非常慢。你能推荐一个更快的解决方案吗?考虑把字符串分解成单个单词并把它们存储在单词表中。如果您这样做,您需要创建一个联接表,以允许您将字符串重新组合在一起,但它也允许您搜索单个单词,而不是一个效率极低的LIKE子句,该子句尝试对整个字符串进行通配符。您指的是哪些字符串?正在传递的字符串?传递的字符串通常是一两个单词。与xml或数据处理一样,我的意思是将表示技能名称的字符串拆分为单个单词。
def index
  search_string = params[:myString]
  @skills= curr_user.skills.where("skill name LIKE ?", "%#{search_string}%")
  render json: @skills
end