Ruby - 访问查询响应的正确方法

时间:2017-02-18 16:29:37

标签: ruby-on-rails ruby postgresql activerecord

访问Active Record查询响应中的对象的正确方法是什么?我特别想要访问question键的值,但我希望以后能够在我的代码中使用其他值。

from -e:1:in `<main>'irb(main):008:0> poll_data
=> #<ActiveRecord::Relation [#<Poll id: 1, user_id: 1, question: "(conorao) - Which NFL team do you like the best?", poll_type: "multiple_choice", active: true, created_at: "2017-02-17 21:08:40", updated_at: "2017-02-17 21:08:40">]>
irb(main):009:0> poll_data.class
=> Poll::ActiveRecord_Relation

我无法弄清楚如何访问与question键关联的值。所以我将查询重新格式化为poll_data = Poll.where(user_id: 1, active: true).pluckpoll_data[0][2]的访问者,但我知道这是垃圾代码。

2 个答案:

答案 0 :(得分:2)

ActiveRecord::Relation是一个rails类,表示数据存储区中的零行,一行或多行。您需要了解的简单信息可能是此类包含Enumerable模块。

因此,您可以调用eachfirstlastselect方法,这些只是示例。 http://ruby-doc.org/core-2.3.1/Enumerable.html

poll_data.each do |item|
  puts item.question
end

答案 1 :(得分:0)

返回ActiveRecord :: Relation,只需执行

即可访问第一项

poll_data.first.question,如果要对每个轮询执行操作,可以遍历结果集,如下所示

poll_data.each do |poll| 
  puts poll.question
end 

还有.first.second.third.fifth便于检索