数组匹配和返回响应

时间:2016-12-08 22:31:35

标签: arrays ruby match

我真的被这个东西困住了..

我有 回答 问题[数组] 响应表>字段和我正在尝试做的是,如果我要输入'HI'它将循环通过问题字段中的所有响应数组,找到一个匹配,它应该返回一个答案或id响应以获得答案。

#<Response id: 3, answer: "Hi, there!", question: ["hi", "hello", "sup"]>

如果问题匹配,则输出应为id;如果我在数组中键入以下输入之一,则输出应为answer

Response.all.each do |r|
  r.include? "hi"
end

知道怎么做吗?

1 个答案:

答案 0 :(得分:1)

几乎就在那里!这应该有效:

response = Response.find do |r|
  r.question.include? "hi"
end

如果你想要答案:

response.answer
检查response不是nil

如果您使用Ruby 2.3,则可以使用

response&.answer

注意:

  • 你正在使用Rails,对吧?如果你提供更多信息(表结构,数据库 type,...)它可能有可能实现更高性能的查询。
  • 在Ruby中使用复数命名数组是一种惯例。 question只是一个问题(String),questions将是一个问题列表(一个字符串数组)。
  • 以小写字母保存所有问题可能是个好主意:['Hi', 'Hello'].include? 'hi' #=> false