Mysql 当all方法未定义时,如何查询所有记录?

Mysql 当all方法未定义时,如何查询所有记录?,mysql,sql,ruby-on-rails,postgresql,youtube-api,Mysql,Sql,Ruby On Rails,Postgresql,Youtube Api,我试图搜索给定YouTube视频的评论,以查看它是否包含特定字符串 我使用的api调用工作正常。但是,我很挣扎,因为。所有的和某些SQL查询都无法工作,因为响应集合似乎是延迟加载的 问题——我如何查询CommentThreads集合以查看其中哪些项包含特定字符串,如“parts” 下面是我尝试运行的几个表达式的控制台输出,包括LIKE查询: @video_comments => #<Yt::Collections::CommentThreads:0x007fe626f70120>

我试图搜索给定YouTube视频的评论,以查看它是否包含特定字符串

我使用的api调用工作正常。但是,我很挣扎,因为
。所有的
和某些SQL查询都无法工作,因为响应集合似乎是延迟加载的

问题——我如何查询CommentThreads集合以查看其中哪些项包含特定字符串,如“parts”

下面是我尝试运行的几个表达式的控制台输出,包括LIKE查询:

@video_comments
=> #<Yt::Collections::CommentThreads:0x007fe626f70120>


@video_comments.all
=> NoMethodError: undefined method `all' for #<Yt::Collections::CommentThreads:0x007fe626f70120>


@video_comments.first.text_display
=> "Links for the parts in the description! <br /><br />What color do you want?"


@video_comments.first.text_display.include? "parts"
=> true


@video_comments.where('text_display LIKE ?', "%parts%").first
=> ArgumentError: wrong number of arguments (given 2, expected 0..1)
from /Users/macbook/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/yt-0.28.5/lib/yt/collections/base.rb:37:in `where'
@video\u评论
=> #
@视频点评
=>NoMethodError:未定义的方法“all”#
@视频\注释。第一。文本\显示
=>“说明中零件的链接

您想要什么颜色?” @视频\注释。第一。文本\显示。包括?“部分” =>正确 @视频注释。其中('文本显示类似?',“%parts%”)。首先 =>ArgumentError:参数数目错误(给定2,预期为0..1) 来自/Users/macbook/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/yt-0.28.5/lib/yt/collections/base.rb:37:在“where”中
Rails 5.0.1+ruby 2.3.0p0+psql(PostgreSQL)9.6.1


编辑:实际的
@video\u注释
响应

。所有
都适用于模型,例如,如果您有模型VideoComments,则
VideoComments。所有
将返回所有注释。 您的上一个查询应该可以工作,您只是有一个语法错误,请重试

    @video_comments.where('text_display iLIKE = ?', "%parts%").first

首先,@video\u comments本身不是活动记录。因此,您不能使用
@video\u comments。所有

根据google的commentThreads,响应返回应该如下所示:

{
  "kind": "youtube#commentThread",
  "etag": etag,
  "id": string,
  "snippet": {
    "channelId": string,
    "videoId": string,
    "topLevelComment": comments Resource,
    "canReply": boolean,
    "totalReplyCount": unsigned integer,
    "isPublic": boolean
  },
  "replies": {
    "comments": [
      comments Resource
    ]
  }
}
因此,您不必使用
@video\u注释。您的所有命令应为:

@video_comments.replies.comments 
(如果不成功,请尝试使用
@video_comments[“repress”][“comments”]

它应该会返回一个评论列表

好的,下一步您将过滤注释列表,以获取包含“部分”单词的注释

@video_comments.replies.comments.select{|comment| comment.text_display.include? "parts"}
差不多吧

有关详细信息,请参阅以下链接:


我做了一些类似的事情,最后通过参考以下内容使其正常工作:

video_评论['items'][0]['snippet']['data']['textOriginal']

(这将返回实际注释。然后可以搜索该文本。)
如果没有单引号,或者在
['items']
之后没有[0](没有引号),它将无法工作

Items
是一个包含数组和哈希嵌套的单个元素的数组。如果我尝试搜索整个
Items
数组,它只返回其中嵌套哈希和数组的名称,而不返回其内容


我发现获得实际内容的唯一方法是直接引用我想要的元素(在本例中,
['textOriginal']

中的注释文本您是否尝试过
使用a
而不是
all
参数错误:参数数量错误(给定2,预期为0..1)
@Thanh\u Tuong这里看一下实际的回复:所以我尝试了你提到的所有方式来访问
回复
。我也尝试了
。items
[items]
片段
等。但是他们都说未定义的方法。Hi@HashRocketSyntax,请尝试这种方式。instance\u variable\u get(“@#{items}@Thanh#Tuong谢谢你的帮助。
名称错误:未定义的局部变量或方法{items}
能否请你删除{}并尝试使用这个:。实例{u变量{u get(@items”)@hashrocketsyntaxintesting
@video\u comments。实例{u变量{u get(@items)
的结果是
nil
。我对
每种
都取得了一些成功,但如果这种方法有效的话,可能会更加优雅