Shp*_*ord 6 arrays ruby-on-rails object
说我有一个Questions和Answer模型,我把所有答案都拉到一个特定的问题.
我可以很容易地做到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排序......虽然我可以在任何领域订购).
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)