Вложенные атрибуты в Rails - PullRequest
1 голос
/ 31 октября 2011

Представьте себе 4 модели в Rails 3.1

class Student < ActiveRecord::Base
    has_many :memberships
    has_many :courses, :through => :memberships
    has_many :tests, :through => :courses
end

class Membership < ActiveRecord::Base
    belongs_to :student
    belongs_to :course
end

class Course < ActiveRecod::Base
   has_many :tests 
   has_many :students, :through => :memberships
end

class Test < ActiveRecord::Base
   belongs_to :course
end

Как вывести отсортированный список (т.е. по дате) предстоящих тестов студента (Я предполагаю, что есть довольно простой ответ, но некоторое время я тщетно пытался)

Мое лучшее предположение примерно такое:

@upcomingTests = @currstudent.tests.sort_by &:testDateTime 

но похоже, что он возвращает пустой массив

1 Ответ

0 голосов
/ 31 октября 2011

Прежде всего, есть небольшая ошибка в вашей модели "Курс". Ему нужно "принадлежат: студенту".

class Course < ActiveRecod::Base
   has_many :tests 
   has_many :students, :through => :memberships
   belongs_to :student
end

После того как вы создали и заполнили внешний ключ, вы можете создать простой named_scope в тестовом режиме:

named_scope :ordered, :order => "created_at DESC"

Тогда просто нужно получить доступ к нему откуда угодно:

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