Rails:获取记录的位置?

时间:2011-04-06 17:39:07

标签: ruby-on-rails arrays object

假设我有一个QuestionsAnswer模型,我将所有答案都提取到特定问题。

我可以轻松地执行each_with_index并找出答案的索引或“位置”(与该特定问题的其他答案相关)。

但是,我想要得到一个具体的答案......我怎么能弄清楚答案的索引与特定问题相关的所有其他答案的含义。

示例Answer数据:

ID  text      question_id
23  awesome   3
27  boooyah   3
38  snap      3

如果我做Answer.find(27)我怎么能弄清楚该记录是第二项(假设我按ID排序......虽然我可以按任何字段订购)。

2 个答案:

答案 0 :(得分:6)

class Answer < ActiveRecord::Base
  belongs_to :question

  def position(column = 'id', order = 'ASC')
    order_by = "#{column} #{order}"
    arrow = order.capitalize == "ASC" ? "<=" : ">="
    question.answers.where("#{column} #{arrow} (?)", self.send(column)).order(order_by).count
  end    
end

Answer.find(27).position
Answer.find(27).position("updated_at")
Answer.find(27).position("updated_at", "DESC")

答案 1 :(得分:1)

这样的东西应该有用,它没有经过测试,但你可以看到这个概念。

class Answer < ActiveRecord::Base

  belongs_to :question

  def placement(ordering_by => 'id ASC')
    question.answers.order(ordering_by).index(self)
  end

end