Rails: Получить размещение записей? - PullRequest
6 голосов
/ 06 апреля 2011

Скажем, у меня есть модель Questions и Answer, и я вытягиваю все ответы на конкретный вопрос.

Я легко могу сделать each_with_index и выяснить, что такое индекс или «место» ответа (по сравнению с другими ответами на этот конкретный вопрос).

Но, скажем, я хочу получить конкретный ответ ... как я все еще могу понять, каков индекс этого ответа по отношению ко всем другим ответам, связанным с конкретным вопросом.

Пример Answer данные:

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

Если я сделал Answer.find(27) как я могу выяснить, что запись является вторым элементом (при условии, что я упорядочиваю по идентификатору ... хотя я мог бы упорядочить по любому полю).

Ответы [ 2 ]

6 голосов
/ 06 апреля 2011
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 голос
/ 06 апреля 2011

Что-то вроде этого должно работать, это не проверено, но вы можете увидеть концепцию.

class Answer < ActiveRecord::Base

  belongs_to :question

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

end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...