如何从活动记录查询中获取列

时间:2014-09-30 15:48:51

标签: ruby-on-rails ruby activerecord

1和#2都不起作用。 Active Record让我疯狂,因为我不知道它何时返回一个对象或一个数组。这次都没有工作。

question = Question.select('id, question, promo_title, promo_code, group_id').where(:group_id => group_id).limit(1)

1

cookies[:question_id] = question['id']

2

cookies[:question_id] = question.id

1 个答案:

答案 0 :(得分:2)

你需要做

cookies[:question_id] = question[0].id

您的查询将为您提供Question::ActiveRecord_Relation个对象。为了获取数据,您可以使用#each遍历所有记录,并使用#[]从结果集合中获取任何特定记录。在您的情况下,它只保留一条记录,因此您可以使用#[]方法将其参数作为0

现在question[0]将为您提供Question个实例,现在您可以按照常规的 Rails 方式调用#id方法。