Сортировка рельсов по алгоритму - PullRequest
1 голос
/ 30 октября 2011

Я бы хотел отсортировать ссылки, используя алгоритм, вся необходимая информация может быть получена из значений в моей таблице Links.Как я могу вернуть элементы, отсортированные по подсчитанному элементу Score?

Схема https://gist.github.com/1326044

Индекс Действие https://gist.github.com/1326045

Расчет времени https://gist.github.com/1326050

Алгоритм

  # Score = (P-1) / (T+2)^G 
  # P = points of an item (and -1 is to negate submitters vote)
  # T = time since submission (in hours)
  # G = Gravity, defaults to 1.8

1 Ответ

2 голосов
/ 30 октября 2011

Я бы сделал следующее:

Сначала в вашей модели:

after_initialize :calculate_score

attr_accessor :score

def calculate_score
  unless self.new_record?
    time_elapsed = (Time.zone.now - self.created_at) / 3600
    self.score = (self.points-1) / (time_elapsed+2)^G # I don't know how you retrieve G
  end
end  

В вашем контроллере:

@links = Link.all.sort_by(&:score)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...