Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/53.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 什么是';拆分';在这个范围内完成什么?_Ruby On Rails - Fatal编程技术网

Ruby on rails 什么是';拆分';在这个范围内完成什么?

Ruby on rails 什么是';拆分';在这个范围内完成什么?,ruby-on-rails,Ruby On Rails,我在一篇博客文章中找到了这个范围 scope :search_by_title, -> (title) { where("(title like ?) OR title in (?)", "%#{title}%", title.split) } 。。。我想找出OR对的后半部分 如果查询是“香蕉蛋糕”, 在我看来,示波器的工作原理是这样的 scope :search_by_title, -> ("banana cake") { where("(title like ?) OR tit

我在一篇博客文章中找到了这个范围

scope :search_by_title, -> (title) { where("(title like ?) OR title in (?)", "%#{title}%", title.split) }
。。。我想找出OR对的后半部分

如果查询是“香蕉蛋糕”, 在我看来,示波器的工作原理是这样的

scope :search_by_title, -> ("banana cake") { where("(title like ?) OR title in (?)", "%banana cake%", ["banana","cake"]) }
这看起来一点用都没有

有人举过一个例子来说明这个范围是如何工作的吗

谢谢

  • 当您的标题包含“
    香蕉蛋糕”
    ”时,范围的第一部分(在
    之前)将起作用

  • 当您的查询为“
    banana
    ”或“
    cake
    ”时,作用域的第二部分(在
    之后)将起作用

  • 因此,它很有用,因为您可以搜索“
    香蕉蛋糕
    ”或“
    香蕉
    ”或“
    蛋糕

  • 如果您没有
    标题。拆分
    部分,则您对“
    香蕉
    ”或“
    蛋糕
    ”的搜索将不起作用。它仅适用于“
    香蕉蛋糕”

      • 当您的标题包含“
        香蕉蛋糕”
        ”时,范围的第一部分(在
        之前)将起作用

      • 当您的查询为“
        banana
        ”或“
        cake
        ”时,作用域的第二部分(在
        之后)将起作用

      • 因此,它很有用,因为您可以搜索“
        香蕉蛋糕
        ”或“
        香蕉
        ”或“
        蛋糕

      • 如果您没有
        标题。拆分
        部分,则您对“
        香蕉
        ”或“
        蛋糕
        ”的搜索将不起作用。它仅适用于“
        香蕉蛋糕”


      在(?)中写入
      标题并向其传递数组时;您正在指定SQL编译器标题必须具有此数组元素之一的精确值。我想我必须启动rails应用程序并检查一下。我一直认为只要使用“title-like”就可以完成同样的事情。当您在(?)
      中编写
      title并向它们传递数组时;您正在指定SQL编译器标题必须具有此数组元素之一的精确值。我想我必须启动rails应用程序并检查一下。我一直认为我可以用“像标题一样”来完成同样的事情。我可能写错了我的问题。但我似乎可以键入'cake',它将匹配'banana cake',而无需使用查询的SQL'in'部分。看看我为什么在这里说这个。。。我可能把问题写错了。但我似乎可以键入'cake',它将匹配'banana cake',而无需使用查询的SQL'in'部分。看看我为什么在这里说这个。。。