#ruby-on-rails #ruby #ruby-on-rails-3
#ruby-on-rails #ruby #ruby-on-rails-3
Вопрос:
Я хочу упорядочить записи на основе артематической операции с двумя столбцами.
Пример: у меня есть столбцы таблицы, над которыми я должен выполнить артематическую операцию и отсортировать на основе ее значения. Пусть столбцы будут math, science and total
.И имя таблицы UserMark
. Обычно мой запрос выглядит следующим образом
UserMark.order('(math/total) desc')
Это должно упорядочить метки пользователя на основе математической / итоговой операции.Как это можно было бы сделать в Ruby on rails?
Комментарии:
1. Вы говорите «два столбца», а затем перечисляете три столбца. Что не так с
order('math/total desc')
?2. Это должно указывать на таблицу, содержащую много столбцов. но мне нужна операция над определенными столбцами.
3. Я все еще не понимаю, о чем вы спрашиваете. Вы можете сортировать по любому выражению, которое хотите, так в чем проблема?
Ответ №1:
У вас есть две возможности.
Вы можете выполнить сортировку в самом запросе Active Record.
UserMark.select("math/total as percentage").order('percentage desc')
или
Вы можете сделать это методом ruby (этот метод должен быть в вашей модели).
def percentage
self.math/self.total
end
def self.sort_by_percentage
UserMark.all.sort_by(amp;:percentage).reverse
end
Комментарии:
1. Спасибо. И есть ли способ получить математическое / общее значение в процентах. В наши существующие записи для временного использования. Я могу выполнить сортировку, используя вышеуказанный метод. но не могу получить разделенное значение атрибута percentage в моих записях.
2. Выполняется ли сортировка в запросе Active record или методом ruby?
3. В запросе Active record.
4. Затем вы можете напрямую получить доступ к столбцу атрибута percentage в объекте. Например, «usermark.percentage» #должен указывать фактическое процентное значение.