Rails:获取记录的位置?

Shp*_*ord 6 arrays ruby-on-rails object

说我有一个QuestionsAnswer模型,我把所有答案都拉到一个特定的问题.

我可以很容易地做到each_with_index并弄清楚答案的索引或"位置"是什么(与该特定问题的其他答案相关).

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

示例Answer数据:

ID  text      question_id
23  awesome   3
27  boooyah   3
38  snap      3
Run Code Online (Sandbox Code Playgroud)

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

fl0*_*00r 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")
Run Code Online (Sandbox Code Playgroud)