访问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).pluck
和poll_data[0][2]
的访问者,但我知道这是垃圾代码。
答案 0 :(得分:2)
ActiveRecord::Relation
是一个rails类,表示数据存储区中的零行,一行或多行。您需要了解的简单信息可能是此类包含Enumerable
模块。
因此,您可以调用each
,first
,last
,select
方法,这些只是示例。 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
便于检索