2015-11-01 5 views
0

У меня есть модель Student и метод, который делает некоторые вычисления и возвращает значениепользовательские атрибуты в рельсах

class Student < ActiveRecord::Base 
    def total_result 
    #some calculations 
    return result 
    end 
end 

Сейчас в моих студентов контроллера я хотел бы сделать следующее

Student.where("total_result > ?", params[:result]) 

но это приводит к ошибке PG :: UndefinedColumn: ERROR. Я использую postgres. Как мне это достичь?

+1

Только атрибуты таблицы могут быть запрошены не методами. Можете ли вы объяснить, что вы пытаетесь сделать? – Pavan

+0

Я пытаюсь принять ввод пользователя, выполнить некоторые вычисления и вернуть строки, которые соответствуют. – Tiamon

+0

Когда вы говорите, возвращаете строки, которые соответствуют, к какому атрибуту вы пытаетесь соответствовать пользователю? – Pavan

ответ

0

Вы могли бы использовать:

Student.select { |student| student.total_result > params[:result] } 

Слово предупреждения: Это загрузит все студенты из базы данных и вычислить значение для каждого из них. Это будет медленно, в зависимости от количества студентов в таблице.

Если вам это нужно более часто, то имеет смысл хранить/кэшировать результат вычисления в базе данных.

+0

Это именно то, что я хотел. На данный момент производительность не вызывает большого беспокойства. благодаря – Tiamon