У меня есть named_scope, который возвращает некоторые записи пользователя (студента) на основе количества связанных записей «групповой задачи», которые они сделали за определенный период времени.
Модель студента:
class Student < ActiveRecord::Base
set_table_name "student"
set_primary_key :sid
has_many :usersessions, :foreign_key => "associatedstudentsid"
has_many :grouptasks, :through => :usersessions
named_scope :used_in_past, lambda {|days_ago| {
:conditions => ['(SELECT count(*) as total_tasks FROM grouptask WHERE creatorstudentid = sid AND creationdate > ?) > 0', Date.today-days_ago]
}}
end
*Модель 1005 * Grouptask:
class Grouptask < ActiveRecord::Base
set_table_name "grouptask"
has_many :usersessions, :foreign_key => "associatedgrouptaskid"
has_many :students, :through => :usersessions
end
Я хочу получить доступ к этому столбцу «total_tasks» на лету из результата для каждой записи, но просто выполнить «student.total_tasks»я понял, потому что этот столбец не отображается на фактический столбец БД, так как он создан во время поиска.Итак, как можно получить доступ к таким вещам в наборе результатов AR?
Вариант использования для этого - таблица с именами учащихся и их общим количеством созданных заданий.Прямо сейчас я делаю это, находя пользователей, которые создали задачи за последние X дней (путем нахождения total_tasks> 0 за этот период времени), а затем делаю для каждого, который просто проходит по этим пользователям и подсчитывает количествозадачи в этот период времени снова.Это, очевидно, приводит к большому количеству вызовов SQL, которые не нужно выполнять, так как эти итоги уже были рассчитаны, чтобы найти учетные записи.
Спасибо за любую помощь.